[PATCH 1 of 6] obsolete: extract helpers from _load()

Martin von Zweigbergk martinvonz at google.com
Wed Feb 4 04:01:08 UTC 2015


# HG changeset patch
# User Martin von Zweigbergk <martinvonz at google.com>
# Date 1421820097 28800
#      Tue Jan 20 22:01:37 2015 -0800
# Node ID 26f1b80d8c5fa5ed05df0eafab61d2241a478934
# Parent  e1dbe0b215ae137eec53ceb12440536d570a83d2
obsolete: extract helpers from  _load()

In preparation for making the successors, precursors, and children
dictionaries lazily populated, break up _load() into one method for
adding markers to each dictionary.

diff -r e1dbe0b215ae -r 26f1b80d8c5f mercurial/obsolete.py
--- a/mercurial/obsolete.py	Mon Feb 02 19:58:41 2015 -0500
+++ b/mercurial/obsolete.py	Tue Jan 20 22:01:37 2015 -0800
@@ -605,17 +605,30 @@
         return self.add(transaction, markers)
 
     @util.nogc
-    def _load(self, markers):
+    def _addsuccessors(self, markers):
         for mark in markers:
-            self._all.append(mark)
-            pre, sucs = mark[:2]
-            self.successors.setdefault(pre, set()).add(mark)
-            for suc in sucs:
+            self.successors.setdefault(mark[0], set()).add(mark)
+
+    @util.nogc
+    def _addprecursors(self, markers):
+        for mark in markers:
+            for suc in mark[1]:
                 self.precursors.setdefault(suc, set()).add(mark)
+
+    @util.nogc
+    def _addchildren(self, markers):
+        for mark in markers:
             parents = mark[5]
             if parents is not None:
                 for p in parents:
                     self.children.setdefault(p, set()).add(mark)
+
+    def _load(self, markers):
+        markers = list(markers) # to allow repeated iteration
+        self._all.extend(markers)
+        self._addsuccessors(markers)
+        self._addprecursors(markers)
+        self._addchildren(markers)
         _checkinvalidmarkers(self)
 
     def relevantmarkers(self, nodes):


More information about the Mercurial-devel mailing list