[PATCH 03 of 10 V2] branchmap: merge _branchtags into updatebranchcache

pierre-yves.david at logilab.fr pierre-yves.david at logilab.fr
Thu Dec 20 08:08:33 CST 2012


# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at logilab.fr>
# Date 1356006209 -3600
# Node ID 7fb0f8672f361e05e78cce6c95c02928f752ddb6
# Parent  322a1c4c3fff352d7694647c291e4edefa1ccc6a
branchmap: merge _branchtags into updatebranchcache

Now that nobody overwrite it, there is no reasons for `_branchtags` to remains
separated from `updatebranchcache`.

diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py
--- a/mercurial/localrepo.py
+++ b/mercurial/localrepo.py
@@ -642,13 +642,24 @@ class localrepository(object):
         better alternative. But we are using this approach until it is ready.
         """
         cl = self.changelog
         return cl.rev(cl.tip())
 
-    def _branchtags(self, partial, lrev):
-        # TODO: rename this function?
+    @unfilteredmethod # Until we get a smarter cache management
+    def updatebranchcache(self):
         cl = self.changelog
+        tip = cl.tip()
+        if self._branchcache is not None and self._branchcachetip == tip:
+            return
+
+        oldtip = self._branchcachetip
+        if oldtip is None or oldtip not in cl.nodemap:
+            partial, last, lrev = self._readbranchcache()
+        else:
+            lrev = cl.rev(oldtip)
+            partial = self._branchcache
+
         catip = self._cacheabletip()
         # if lrev == catip: cache is already up to date
         # if lrev >  catip: we have uncachable element in `partial` can't write
         #                   on disk
         if lrev < catip:
@@ -661,30 +672,12 @@ class localrepository(object):
         # written to disk since it's not cacheable.
         tiprev = len(self) - 1
         if lrev < tiprev:
             ctxgen = (self[r] for r in cl.revs(lrev + 1, tiprev))
             self._updatebranchcache(partial, ctxgen)
-        return partial
-
-    @unfilteredmethod # Until we get a smarter cache management
-    def updatebranchcache(self):
-        cl = self.changelog
-        tip = cl.tip()
-        if self._branchcache is not None and self._branchcachetip == tip:
-            return
-
-        oldtip = self._branchcachetip
+        self._branchcache = partial
         self._branchcachetip = tip
-        if oldtip is None or oldtip not in cl.nodemap:
-            partial, last, lrev = self._readbranchcache()
-        else:
-            lrev = cl.rev(oldtip)
-            partial = self._branchcache
-
-        self._branchtags(partial, lrev)
-        # this private cache holds all heads (not just the branch tips)
-        self._branchcache = partial
 
     def branchmap(self):
         '''returns a dictionary {branch: [branchheads]}'''
         if self.changelog.filteredrevs:
             # some changeset are excluded we can't use the cache


More information about the Mercurial-devel mailing list