revset: move order argument to run-time match function
We no longer need the order flag to build a parsed tree.
--- a/mercurial/cmdutil.py Wed Aug 30 23:53:30 2017 +0900
+++ b/mercurial/cmdutil.py Wed Aug 30 22:41:36 2017 +0900
@@ -2558,8 +2558,8 @@
if not (revs.isdescending() or revs.istopo()):
revs.sort(reverse=True)
if expr:
- matcher = revset.match(repo.ui, expr, order=revset.followorder)
- revs = matcher(repo, revs)
+ matcher = revset.match(repo.ui, expr)
+ revs = matcher(repo, revs, order=revset.followorder)
if limit is not None:
limitedrevs = []
for idx, rev in enumerate(revs):
@@ -2584,8 +2584,8 @@
return smartset.baseset([]), None, None
expr, filematcher = _makelogrevset(repo, pats, opts, revs)
if expr:
- matcher = revset.match(repo.ui, expr, order=revset.followorder)
- revs = matcher(repo, revs)
+ matcher = revset.match(repo.ui, expr)
+ revs = matcher(repo, revs, order=revset.followorder)
if limit is not None:
limitedrevs = []
for idx, r in enumerate(revs):
--- a/mercurial/revset.py Wed Aug 30 23:53:30 2017 +0900
+++ b/mercurial/revset.py Wed Aug 30 22:41:36 2017 +0900
@@ -76,8 +76,8 @@
# equivalent to 'follow' for them, and the resulting order is based on the
# 'subset' parameter passed down to them:
#
-# m = revset.match(..., order=defineorder)
-# m(repo, subset)
+# m = revset.match(...)
+# m(repo, subset, order=defineorder)
# ^^^^^^
# For most revsets, 'define' means using the order this subset provides
#
@@ -2120,21 +2120,14 @@
# hook for extensions to execute code on the optimized tree
pass
-def match(ui, spec, repo=None, order=defineorder):
- """Create a matcher for a single revision spec
+def match(ui, spec, repo=None):
+ """Create a matcher for a single revision spec"""
+ return matchany(ui, [spec], repo=repo)
- If order=followorder, a matcher takes the ordering specified by the input
- set.
- """
- return matchany(ui, [spec], repo=repo, order=order)
-
-def matchany(ui, specs, repo=None, order=defineorder, localalias=None):
+def matchany(ui, specs, repo=None, localalias=None):
"""Create a matcher that will include any revisions matching one of the
given specs
- If order=followorder, a matcher takes the ordering specified by the input
- set.
-
If localalias is not None, it is a dict {name: definitionstring}. It takes
precedence over [revsetalias] config section.
"""
@@ -2166,11 +2159,11 @@
tree = revsetlang.analyze(tree)
tree = revsetlang.optimize(tree)
posttreebuilthook(tree, repo)
- return makematcher(tree, order)
+ return makematcher(tree)
-def makematcher(tree, order=defineorder):
+def makematcher(tree):
"""Create a matcher from an evaluatable tree"""
- def mfunc(repo, subset=None):
+ def mfunc(repo, subset=None, order=defineorder):
if subset is None:
subset = fullreposet(repo)
return getset(repo, subset, tree, order)