diff --git a/mercurial/revset.py b/mercurial/revset.py --- a/mercurial/revset.py +++ b/mercurial/revset.py @@ -407,7 +407,12 @@ def _orsetlist(repo, subset, xs): return a + b def orset(repo, subset, x, order): - return _orsetlist(repo, subset, getlist(x)) + xs = getlist(x) + if order == followorder: + # slow path to take the subset order + return subset & _orsetlist(repo, fullreposet(repo), xs) + else: + return _orsetlist(repo, subset, xs) def notset(repo, subset, x, order): return subset - getset(repo, subset, x) diff --git a/tests/test-revset.t b/tests/test-revset.t --- a/tests/test-revset.t +++ b/tests/test-revset.t @@ -1317,15 +1317,14 @@ ordering defined by it. follow) define) * set: - , + , - >, - > + >> + 2 + 1 0 - 1 - 2 - BROKEN: should be '2 1 0' '_intlist(a b)' should behave like 'a + b':