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.
--- 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'''