Mercurial > public > mercurial-scm > hg
diff mercurial/phases.py @ 18101:a464deecc9dd
clfilter: add a cache on repo for set of revision to filter for a given set.
Recomputing the filtered revisions at every access to changelog is far too
expensive. This changeset introduce a cache for this information. This cache is
hold by the repository (unfiltered repository) and invalidated when necessary.
This cache is not a protected attribute (leading _) because some logic that
invalidate it is not held by the local repo itself.
author | Pierre-Yves David <pierre-yves.david@ens-lyon.org> |
---|---|
date | Thu, 20 Dec 2012 17:14:07 +0100 |
parents | 9bc5873e52af |
children | 312262ebc223 |
line wrap: on
line diff
--- a/mercurial/phases.py Thu Dec 20 15:32:42 2012 +0100 +++ b/mercurial/phases.py Thu Dec 20 17:14:07 2012 +0100 @@ -249,6 +249,7 @@ if targetphase != 0: self.retractboundary(repo, targetphase, delroots) obsolete.clearobscaches(repo) + repo.filteredrevcache.clear() def retractboundary(self, repo, targetphase, nodes): # Be careful to preserve shallow-copied values: do not update @@ -267,6 +268,7 @@ currentroots.intersection_update(ctx.node() for ctx in ctxs) self._updateroots(targetphase, currentroots) obsolete.clearobscaches(repo) + repo.filteredrevcache.clear() def advanceboundary(repo, targetphase, nodes): """Add nodes to a phase changing other nodes phases if necessary.