From patchwork Wed Jul 25 11:56:56 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: D3976: grep: add MULTIREV support to --all-files flag From: phabricator X-Patchwork-Id: 32941 Message-Id: <55af1005efa27fc92edac5714f408d55@localhost.localdomain> To: mercurial-devel@mercurial-scm.org Date: Wed, 25 Jul 2018 11:56:56 +0000 sangeet259 updated this revision to Diff 9663. sangeet259 edited the summary of this revision. REPOSITORY rHG Mercurial CHANGES SINCE LAST UPDATE https://phab.mercurial-scm.org/D3976?vs=9657&id=9663 REVISION DETAIL https://phab.mercurial-scm.org/D3976 AFFECTED FILES mercurial/cmdutil.py tests/test-grep.t CHANGE DETAILS To: sangeet259, #hg-reviewers Cc: mercurial-devel diff --git a/tests/test-grep.t b/tests/test-grep.t --- a/tests/test-grep.t +++ b/tests/test-grep.t @@ -491,3 +491,12 @@ ] $ cd .. + +test -rMULTIREV with --all-files + + $ cd sng + $ hg rm um + $ hg commit -m "deletes um" + $ hg grep -r "0:2" "unmod" --all-files + um:0:unmod + $ cd .. diff --git a/mercurial/cmdutil.py b/mercurial/cmdutil.py --- a/mercurial/cmdutil.py +++ b/mercurial/cmdutil.py @@ -1889,9 +1889,7 @@ revs = _walkrevs(repo, opts) if not revs: return [] - if allfiles and len(revs) > 1: - raise error.Abort(_("multiple revisions not supported with " - "--all-files")) + wanted = set() slowpath = match.anypats() or (not match.always() and opts.get('removed')) fncache = {} @@ -1983,6 +1981,11 @@ it = iter(revs) stopiteration = False + + # the files dictionary stores all the files that have been looked at + # in the allfiles mode + files ={} + for windowsize in increasingwindows(): nrevs = [] for i in xrange(windowsize): @@ -1998,12 +2001,15 @@ if not fns: def fns_generator(): if allfiles: - fiter = iter(ctx) + for f in ctx: + if match(f): + if f not in files: + files[f] = ctx + yield f else: - fiter = ctx.files() - for f in fiter: - if match(f): - yield f + for f in ctx.files(): + if match(f): + yield f fns = fns_generator() prepare(ctx, fns) for rev in nrevs: