log: drop hack to fix order of revset (issue5100)
authorYuya Nishihara <yuya@tcha.org>
Tue, 03 May 2016 14:24:00 +0900
changeset 29956 fa5e4f58dfbc
parent 29955 1b5931604a5a
child 29957 7d053ba73178
log: drop hack to fix order of revset (issue5100) Specify ordered=revset.followorder instead. This patch effectively backs out c407583cf5f6. revs.sort(reverse=True) is replaced by revs.reverse() because the matcher should no longer reorder revisions.
mercurial/cmdutil.py
--- a/mercurial/cmdutil.py	Tue May 03 14:18:28 2016 +0900
+++ b/mercurial/cmdutil.py	Tue May 03 14:24:00 2016 +0900
@@ -2189,19 +2189,10 @@
         # order, because most filters deal with the changelog.
         if not opts.get('rev'):
             revs.reverse()
-        matcher = revset.match(repo.ui, expr)
-        # Revset matches can reorder revisions. "A or B" typically returns
-        # returns the revision matching A then the revision matching B. Sort
-        # again to fix that.
-        fixopts = ['branch', 'only_branch', 'keyword', 'user']
-        oldrevs = revs
+        matcher = revset.match(repo.ui, expr, order=revset.followorder)
         revs = matcher(repo, revs)
         if not opts.get('rev'):
-            revs.sort(reverse=True)
-        elif len(pats) > 1 or any(len(opts.get(op, [])) > 1 for op in fixopts):
-            # XXX "A or B" is known to change the order; fix it by filtering
-            # matched set again (issue5100)
-            revs = oldrevs & revs
+            revs.reverse()
     if limit is not None:
         limitedrevs = []
         for idx, r in enumerate(revs):