# HG changeset patch # User Sangeet Kumar Mishra # Date 1532503231 -19800 # Node ID f3f109971359e16ff5ade45821b697329a326183 # Parent 0dce1297dd010bc838c4752d09498a345ac74f6a grep: add MULTIREV support to --allfiles flag This patch facilitates passing multiple revisions with all-files flag. It's assumed that if you are passing multiple revisions to --allfiles, you want hits from all of them. Differential Revision: https://phab.mercurial-scm.org/D3976 diff -r 0dce1297dd01 -r f3f109971359 mercurial/cmdutil.py --- a/mercurial/cmdutil.py Wed Jul 25 10:34:31 2018 +0200 +++ b/mercurial/cmdutil.py Wed Jul 25 12:50:31 2018 +0530 @@ -1889,9 +1889,6 @@ 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 = {} diff -r 0dce1297dd01 -r f3f109971359 mercurial/commands.py --- a/mercurial/commands.py Wed Jul 25 10:34:31 2018 +0200 +++ b/mercurial/commands.py Wed Jul 25 12:50:31 2018 +0530 @@ -2533,6 +2533,7 @@ """ opts = pycompat.byteskwargs(opts) diff = opts.get('all') or opts.get('diff') + all_files = opts.get('all_files') if diff and opts.get('all_files'): raise error.Abort(_('--diff and --all-files are mutually exclusive')) # TODO: remove "not opts.get('rev')" if --all-files -rMULTIREV gets working @@ -2757,7 +2758,7 @@ if pstates or states: r = display(fm, fn, ctx, pstates, states) found = found or r - if r and not diff: + if r and not diff and not all_files: skip[fn] = True if copy: skip[copy] = True diff -r 0dce1297dd01 -r f3f109971359 tests/test-grep.t --- a/tests/test-grep.t Wed Jul 25 10:34:31 2018 +0200 +++ b/tests/test-grep.t Wed Jul 25 12:50:31 2018 +0530 @@ -491,3 +491,13 @@ ] $ 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 + um:1:unmod + $ cd ..