diff mercurial/revset.py @ 20991:a05d694599f9

revlog: use context ancestor instead of changelog ancestor We want to move in this direction.
author Mads Kiilerich <madski@unity3d.com>
date Mon, 07 Apr 2014 23:17:51 +0200
parents f52e4ca93529
children 7731a2281cf0
line wrap: on
line diff
--- a/mercurial/revset.py	Tue Feb 25 20:31:53 2014 +0100
+++ b/mercurial/revset.py	Mon Apr 07 23:17:51 2014 +0200
@@ -320,7 +320,7 @@
 
 def ancestor(repo, subset, x):
     """``ancestor(*changeset)``
-    Greatest common ancestor of the changesets.
+    A greatest common ancestor of the changesets.
 
     Accepts 0 or more changesets.
     Will return empty list when passed no args.
@@ -332,18 +332,15 @@
     anc = None
 
     # (getset(repo, rl, i) for i in l) generates a list of lists
-    rev = repo.changelog.rev
-    ancestor = repo.changelog.ancestor
-    node = repo.changelog.node
     for revs in (getset(repo, rl, i) for i in l):
         for r in revs:
             if anc is None:
-                anc = r
+                anc = repo[r]
             else:
-                anc = rev(ancestor(node(anc), node(r)))
-
-    if anc is not None and anc in subset:
-        return baseset([anc])
+                anc = anc.ancestor(repo[r])
+
+    if anc is not None and anc.rev() in subset:
+        return baseset([anc.rev()])
     return baseset([])
 
 def _ancestors(repo, subset, x, followfirst=False):