localrepo: change _updatebranchcache to use a context generator stable
authorSune Foldager <cryo@cyanite.org>
Fri, 26 Mar 2010 17:02:23 +0100
branchstable
changeset 10770 fe39f0160c74
parent 10768 95b7a15b2f05
child 10771 01f097c4ae66
localrepo: change _updatebranchcache to use a context generator
hgext/mq.py
mercurial/localrepo.py
--- a/hgext/mq.py	Wed Mar 24 19:44:30 2010 +0100
+++ b/hgext/mq.py	Fri Mar 26 17:02:23 2010 +0100
@@ -2603,7 +2603,8 @@
             start = lrev + 1
             if start < qbase:
                 # update the cache (excluding the patches) and save it
-                self._updatebranchcache(partial, lrev + 1, qbase)
+                ctxgen = (self[r] for r in xrange(lrev + 1, qbase))
+                self._updatebranchcache(partial, ctxgen)
                 self._writebranchcache(partial, cl.node(qbase - 1), qbase - 1)
                 start = qbase
             # if start = qbase, the cache is as updated as it should be.
@@ -2611,7 +2612,8 @@
             # we might as well use it, but we won't save it.
 
             # update the cache up to the tip
-            self._updatebranchcache(partial, start, len(cl))
+            ctxgen = (self[r] for r in xrange(start, len(cl)))
+            self._updatebranchcache(partial, ctxgen)
 
             return partial
 
--- a/mercurial/localrepo.py	Wed Mar 24 19:44:30 2010 +0100
+++ b/mercurial/localrepo.py	Fri Mar 26 17:02:23 2010 +0100
@@ -320,7 +320,8 @@
         # TODO: rename this function?
         tiprev = len(self) - 1
         if lrev != tiprev:
-            self._updatebranchcache(partial, lrev + 1, tiprev + 1)
+            ctxgen = (self[r] for r in xrange(lrev + 1, tiprev + 1))
+            self._updatebranchcache(partial, ctxgen)
             self._writebranchcache(partial, self.changelog.tip(), tiprev)
 
         return partial
@@ -398,11 +399,10 @@
         except (IOError, OSError):
             pass
 
-    def _updatebranchcache(self, partial, start, end):
+    def _updatebranchcache(self, partial, ctxgen):
         # collect new branch entries
         newbranches = {}
-        for r in xrange(start, end):
-            c = self[r]
+        for c in ctxgen:
             newbranches.setdefault(c.branch(), []).append(c.node())
         # if older branchheads are reachable from new ones, they aren't
         # really branchheads. Note checking parents is insufficient: