# HG changeset patch # User Yuya Nishihara # Date 1474545233 -32400 # Node ID 46825334f2702512c29a4c38448f2e72f5cf7f21 # Parent 599912a62ff65005b8b6c8e8c44a67855f0e0bbd graphlog: preserve topo sort even if additional filter options specified Use ordered=revset.followorder instead. This change is logically the same as fa5e4f58dfbc. diff -r 599912a62ff6 -r 46825334f270 mercurial/cmdutil.py --- a/mercurial/cmdutil.py Thu Sep 22 21:52:00 2016 +0900 +++ b/mercurial/cmdutil.py Thu Sep 22 20:53:53 2016 +0900 @@ -2155,12 +2155,9 @@ # Revset matchers often operate faster on revisions in changelog # order, because most filters deal with the changelog. 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. + matcher = revset.match(repo.ui, expr, order=revset.followorder) revs = matcher(repo, revs) - revs.sort(reverse=True) + revs.reverse() if limit is not None: limitedrevs = [] for idx, rev in enumerate(revs): diff -r 599912a62ff6 -r 46825334f270 tests/test-glog-topological.t --- a/tests/test-glog-topological.t Thu Sep 22 21:52:00 2016 +0900 +++ b/tests/test-glog-topological.t Thu Sep 22 20:53:53 2016 +0900 @@ -60,6 +60,20 @@ o 0 +(display nodes filtered by log options) + + $ hg log -G -r 'sort(all(), topo)' -k '.3' + o 8 + | + o 3 + | + ~ + o 7 + | + o 6 + | + ~ + (revset skipping nodes) $ hg log -G --rev 'sort(not (2+6), topo)'