diff --git a/mercurial/revset.py b/mercurial/revset.py --- a/mercurial/revset.py +++ b/mercurial/revset.py @@ -2148,6 +2148,19 @@ # hook for extensions to execute code on the optimized tree pass +def buildtree(specs, repo=None): + """ builds the tree on basis of specs and returns it """ + lookup = None + if repo: + lookup = repo.__contains__ + if len(specs) == 1: + tree = revsetlang.parse(specs[0], lookup) + else: + tree = ('or', + ('list',) + tuple(revsetlang.parse(s, lookup) for s in specs)) + + return tree + def match(ui, spec, repo=None): """Create a matcher for a single revision spec""" return matchany(ui, [spec], repo=repo) @@ -2167,14 +2180,8 @@ return emptymatcher if not all(specs): raise error.ParseError(_("empty query")) - lookup = None - if repo: - lookup = repo.__contains__ - if len(specs) == 1: - tree = revsetlang.parse(specs[0], lookup) - else: - tree = ('or', - ('list',) + tuple(revsetlang.parse(s, lookup) for s in specs)) + + tree = buildtree(specs, repo) aliases = [] warn = None