clfilter: do not use branchmap cache if there are filtered changesets
authorPierre-Yves David <pierre-yves.david@ens-lyon.org>
Mon, 03 Sep 2012 14:34:19 +0200
changeset 17714 5210e5a556d9
parent 17713 2c6382772db0
child 17715 21c503480986
clfilter: do not use branchmap cache if there are filtered changesets If there are filtered changesets the cache is not valid. We'll have to cache branchmap for filtered state too, but for now recomputing the branchmap is enough.
mercurial/localrepo.py
--- a/mercurial/localrepo.py	Mon Oct 08 09:55:41 2012 -0700
+++ b/mercurial/localrepo.py	Mon Sep 03 14:34:19 2012 +0200
@@ -627,8 +627,15 @@
 
     def branchmap(self):
         '''returns a dictionary {branch: [branchheads]}'''
-        self.updatebranchcache()
-        return self._branchcache
+        if self.changelog.filteredrevs:
+            # some changeset are excluded we can't use the cache
+            branchmap = {}
+            self._updatebranchcache(branchmap, (self[r] for r in self))
+            return branchmap
+        else:
+            self.updatebranchcache()
+            return self._branchcache
+
 
     def _branchtip(self, heads):
         '''return the tipmost branch head in heads'''