revset: make dagrange preserve order of input set
Unlike range, dagrange has no inverted range (such as '10:0'). So there should
be no practical reason to keep dagrange as a function that forces its own
ordering.
No performance regression is spotted in contrib/base-revsets.txt.
--- a/mercurial/revset.py Thu May 05 09:26:09 2016 +0000
+++ b/mercurial/revset.py Tue May 03 12:36:44 2016 +0900
@@ -386,9 +386,7 @@
r = fullreposet(repo)
xs = reachableroots(repo, getset(repo, r, x), getset(repo, r, y),
includepath=True)
- # XXX We should combine with subset first: 'subset & baseset(...)'. This is
- # necessary to ensure we preserve the order in subset.
- return xs & subset
+ return subset & xs
def andset(repo, subset, x, y):
return getset(repo, getset(repo, subset, x), y)
--- a/tests/test-revset.t Thu May 05 09:26:09 2016 +0000
+++ b/tests/test-revset.t Tue May 03 12:36:44 2016 +0900
@@ -898,6 +898,16 @@
$ log 'tag(tip)'
9
+Test order of revisions in compound expression
+----------------------------------------------
+
+ 'A & B' should follow the order of 'A':
+
+ $ log '2:0 & 0::2'
+ 2
+ 1
+ 0
+
test sort revset
--------------------------------------------