mercurial/revlog.py
changeset 20557 514d32de6646
parent 20217 33394f2e331e
child 20965 774ff56cbe34
--- a/mercurial/revlog.py	Mon Feb 24 22:42:14 2014 +0100
+++ b/mercurial/revlog.py	Mon Feb 24 22:42:14 2014 +0100
@@ -734,17 +734,21 @@
                 break
         return False
 
-    def ancestor(self, a, b):
-        """calculate the least common ancestor of nodes a and b"""
-
+    def commonancestors(self, a, b):
+        """calculate the least common ancestors of nodes a and b"""
         a, b = self.rev(a), self.rev(b)
         try:
             ancs = self.index.ancestors(a, b)
-        except (AttributeError, OverflowError):
+        except (AttributeError, OverflowError): # C implementation failed
             ancs = ancestor.ancestors(self.parentrevs, a, b)
+        return map(self.node, ancs)
+
+    def ancestor(self, a, b):
+        """calculate a least common ancestor of nodes a and b"""
+        ancs = self.commonancestors(a, b)
         if ancs:
             # choose a consistent winner when there's a tie
-            return min(map(self.node, ancs))
+            return min(ancs)
         return nullid
 
     def _match(self, id):