diff mercurial/context.py @ 21125:e94e90a4526e

context: tell when .ancestor picks one of multiple common ancestors heads Show a message like note: using 0f6b37dbe527 as ancestor of adfe50279922 and cf89f02107e5 So far this is just a warning - there is nothing the user can do to select another ancestor.
author Mads Kiilerich <madski@unity3d.com>
date Thu, 17 Apr 2014 17:32:04 +0200
parents a63958bcf63a
children 99b5eaf372a7
line wrap: on
line diff
--- a/mercurial/context.py	Thu Apr 17 09:36:09 2014 +0900
+++ b/mercurial/context.py	Thu Apr 17 17:32:04 2014 +0200
@@ -402,8 +402,17 @@
         n2 = c2._node
         if n2 is None:
             n2 = c2._parents[0]._node
-        n = self._repo.changelog.ancestor(self._node, n2)
-        return changectx(self._repo, n)
+        cahs = self._repo.changelog.commonancestorsheads(self._node, n2)
+        if not cahs:
+            anc = nullid
+        elif len(cahs) == 1:
+            anc = cahs[0]
+        else:
+            anc = self._repo.changelog.ancestor(self._node, n2)
+            self._repo.ui.status(
+                (_("note: using %s as ancestor of %s and %s\n") %
+                 (short(anc), short(self._node), short(n2))))
+        return changectx(self._repo, anc)
 
     def descendant(self, other):
         """True if other is descendant of this changeset"""