[PATCH] revset: add partial support for ancestor(wdir())

Yuya Nishihara yuya at tcha.org
Sat Jun 30 02:54:02 UTC 2018


# HG changeset patch
# User Yuya Nishihara <yuya at tcha.org>
# Date 1530281603 -32400
#      Fri Jun 29 23:13:23 2018 +0900
# Node ID 1a8d711aa48c9f42fdb6b66886685b5d035e7d1e
# Parent  70f7552b82e5f30f9016de57bcd217dc8061c859
revset: add partial support for ancestor(wdir())

It's easy, so let's make it happen. I'm not certain if 'wdir() &' should
be required. ancestors(wdir()) works without it, but ancestor(wdir()) doesn't
as of now. That's the issue of fullreposet.__contains__() vs __and__().

diff --git a/mercurial/revset.py b/mercurial/revset.py
--- a/mercurial/revset.py
+++ b/mercurial/revset.py
@@ -319,8 +319,9 @@ def ancestor(repo, subset, x):
     for r in reviter:
         anc = anc.ancestor(repo[r])
 
-    if anc.rev() in subset:
-        return baseset([anc.rev()])
+    r = scmutil.intrev(anc)
+    if r in subset:
+        return baseset([r])
     return baseset()
 
 def _ancestors(repo, subset, x, followfirst=False, startdepth=None,
diff --git a/tests/test-revset.t b/tests/test-revset.t
--- a/tests/test-revset.t
+++ b/tests/test-revset.t
@@ -1813,6 +1813,16 @@ Test working-directory revision
   6
   7
   2147483647
+  $ hg debugrevspec '0:wdir() & ancestor(wdir())'
+  2147483647
+  $ hg debugrevspec '0:wdir() & ancestor(.:wdir())'
+  4
+  $ hg debugrevspec '0:wdir() & ancestor(wdir(), wdir())'
+  2147483647
+  $ hg debugrevspec '0:wdir() & ancestor(wdir(), tip)'
+  4
+  $ hg debugrevspec 'null:wdir() & ancestor(wdir(), null)'
+  -1
   $ hg debugrevspec 'wdir()~0'
   2147483647
   $ hg debugrevspec 'p1(wdir())'


More information about the Mercurial-devel mailing list