revlog: refactor out the rev-oriented part of commonancestorheads
authorBoris Feld <boris.feld@octobus.net>
Thu, 21 Jun 2018 23:56:51 +0100
changeset 38512 99f864b34451
parent 38511 879cbdde63df
child 38513 6db38c9d7e00
revlog: refactor out the rev-oriented part of commonancestorheads We plan to use this in a function taking revs as argument. Round trips to nodes seem silly.
mercurial/revlog.py
--- a/mercurial/revlog.py	Thu Jun 21 23:53:43 2018 +0100
+++ b/mercurial/revlog.py	Thu Jun 21 23:56:51 2018 +0100
@@ -1390,11 +1390,16 @@
     def commonancestorsheads(self, a, b):
         """calculate all the heads of the common ancestors of nodes a and b"""
         a, b = self.rev(a), self.rev(b)
+        ancs = self._commonancestorsheads(a, b)
+        return pycompat.maplist(self.node, ancs)
+
+    def _commonancestorsheads(self, *revs):
+        """calculate all the heads of the common ancestors of revs"""
         try:
-            ancs = self.index.commonancestorsheads(a, b)
+            ancs = self.index.commonancestorsheads(*revs)
         except (AttributeError, OverflowError): # C implementation failed
-            ancs = ancestor.commonancestorsheads(self.parentrevs, a, b)
-        return pycompat.maplist(self.node, ancs)
+            ancs = ancestor.commonancestorsheads(self.parentrevs, *revs)
+        return ancs
 
     def isancestor(self, a, b):
         """return True if node a is an ancestor of node b