twitter/commons — pull request #71 by benjyw (2012-08-22 20:24:55+00:00)
Title: Reworking Pants invalidation logic.

This simplifies the code by having all invalidation done by the
same mechanism, namely changes to the cache_key. For example,
to invalidate dependents we used to manually go through a target's
dependents and invalidate them by force. Now we just add in
each target's dependencies when we compute its cache keys.

This ends up unifying a bunch of special cases, thus making the
code more succinct. It's also more correct wrt artifact caching:

Now two artifacts build with the same sources but different upstream
deps will have different cache keys, as they should.