From patchwork Tue Feb 10 15:50:00 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [1, of, 3] revset: make match function initiate query from full set by default From: Yuya Nishihara X-Patchwork-Id: 7773 Message-Id: To: mercurial-devel@selenic.com Date: Wed, 11 Feb 2015 00:50:00 +0900 # HG changeset patch # User Yuya Nishihara # Date 1422883267 -32400 # Mon Feb 02 22:21:07 2015 +0900 # Node ID c5bde060d38bf4c2abd185f2877dda7f0eda98a3 # Parent ff5caa8dfd993680d9602ca6ebb14da9de10d5f4 revset: make match function initiate query from full set by default This change is intended to avoid exposing the implementation detail to callers. I'm going to extend fullreposet to support "null" revision, so these mfunc calls will have to use fullreposet() instead of spanset(). diff --git a/mercurial/commands.py b/mercurial/commands.py --- a/mercurial/commands.py +++ b/mercurial/commands.py @@ -2885,7 +2885,7 @@ def debugrevspec(ui, repo, expr, **opts) weight, optimizedtree = revset.optimize(newtree, True) ui.note("* optimized:\n", revset.prettyformat(optimizedtree), "\n") func = revset.match(ui, expr) - for c in func(repo, revset.spanset(repo)): + for c in func(repo): ui.write("%s\n" % c) @command('debugsetparents', [], _('REV1 [REV2]')) diff --git a/mercurial/hgweb/webcommands.py b/mercurial/hgweb/webcommands.py --- a/mercurial/hgweb/webcommands.py +++ b/mercurial/hgweb/webcommands.py @@ -187,7 +187,7 @@ def _search(web, req, tmpl): mfunc = revset.match(web.repo.ui, revdef) try: - revs = mfunc(web.repo, revset.spanset(web.repo)) + revs = mfunc(web.repo) return MODE_REVSET, revs # ParseError: wrongly placed tokens, wrongs arguments, etc # RepoLookupError: no such revision, e.g. in 'revision:' diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py --- a/mercurial/localrepo.py +++ b/mercurial/localrepo.py @@ -482,7 +482,7 @@ class localrepository(object): '''Return a list of revisions matching the given revset''' expr = revset.formatspec(expr, *args) m = revset.match(None, expr) - return m(self, revset.spanset(self)) + return m(self) def set(self, expr, *args): ''' diff --git a/mercurial/revset.py b/mercurial/revset.py --- a/mercurial/revset.py +++ b/mercurial/revset.py @@ -2448,7 +2448,9 @@ def match(ui, spec, repo=None): tree = findaliases(ui, tree, showwarning=ui.warn) tree = foldconcat(tree) weight, tree = optimize(tree, True) - def mfunc(repo, subset): + def mfunc(repo, subset=None): + if subset is None: + subset = spanset(repo) if util.safehasattr(subset, 'isascending'): result = getset(repo, subset, tree) else: diff --git a/mercurial/scmutil.py b/mercurial/scmutil.py --- a/mercurial/scmutil.py +++ b/mercurial/scmutil.py @@ -672,11 +672,11 @@ def revrange(repo, revs): # fall through to new-style queries if old-style fails m = revset.match(repo.ui, spec, repo) if seen or l: - dl = [r for r in m(repo, revset.spanset(repo)) if r not in seen] + dl = [r for r in m(repo) if r not in seen] l = l + revset.baseset(dl) seen.update(dl) else: - l = m(repo, revset.spanset(repo)) + l = m(repo) return l diff --git a/mercurial/templater.py b/mercurial/templater.py --- a/mercurial/templater.py +++ b/mercurial/templater.py @@ -393,7 +393,7 @@ def revset(context, mapping, args): def query(expr): m = revsetmod.match(repo.ui, expr) - return m(repo, revsetmod.spanset(repo)) + return m(repo) if len(args) > 1: formatargs = list([a[0](context, mapping, a[1]) for a in args[1:]])