[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