[PATCH STABLE] revset: make matching() preserve input revision order
Patrick Mezard
patrick at mezard.eu
Wed May 9 12:13:50 CDT 2012
# HG changeset patch
# User Patrick Mezard <patrick at mezard.eu>
# Date 1336581914 -7200
# Branch stable
# Node ID 3c20c36126672de3c22d6e565220c1fcc9245eaf
# Parent 20a9d823f242f00c3b8c2f0d7ce4c4e081cf11eb
revset: make matching() preserve input revision order
diff --git a/mercurial/revset.py b/mercurial/revset.py
--- a/mercurial/revset.py
+++ b/mercurial/revset.py
@@ -996,7 +996,7 @@
# is only one field to match)
getinfo = lambda r: [f(r) for f in getfieldfuncs]
- matches = []
+ matches = set()
for rev in revs:
target = getinfo(rev)
for r in subset:
@@ -1006,10 +1006,8 @@
match = False
break
if match:
- matches.append(r)
- if len(revs) > 1:
- matches = sorted(set(matches))
- return matches
+ matches.add(r)
+ return [r for r in subset if r in matches]
def reverse(repo, subset, x):
"""``reverse(set)``
diff --git a/tests/test-revset.t b/tests/test-revset.t
--- a/tests/test-revset.t
+++ b/tests/test-revset.t
@@ -410,6 +410,10 @@
0
$ log '4::8 - 8'
4
+ $ log 'matching(1 or 2 or 3) and (2 or 3 or 1)'
+ 2
+ 3
+ 1
issue2437
More information about the Mercurial-devel
mailing list