Patchwork D3976: grep: add MULTIREV support to --allfiles flag

login
register
mail settings
Submitter phabricator
Date Aug. 7, 2018, 2:25 p.m.
Message ID <64984c30ba0fc6cbdb17534d1faf53ed@localhost.localdomain>
Download mbox | patch
Permalink /patch/33402/
State Not Applicable
Headers show

Comments

phabricator - Aug. 7, 2018, 2:25 p.m.
sangeet259 updated this revision to Diff 10057.

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST UPDATE
  https://phab.mercurial-scm.org/D3976?vs=9937&id=10057

REVISION DETAIL
  https://phab.mercurial-scm.org/D3976

AFFECTED FILES
  mercurial/cmdutil.py
  mercurial/commands.py
  tests/test-grep.t

CHANGE DETAILS




To: sangeet259, #hg-reviewers
Cc: yuja, mercurial-devel

Patch

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,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 ..
diff --git a/mercurial/commands.py b/mercurial/commands.py
--- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -2532,6 +2532,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
@@ -2756,7 +2757,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 --git a/mercurial/cmdutil.py b/mercurial/cmdutil.py
--- a/mercurial/cmdutil.py
+++ b/mercurial/cmdutil.py
@@ -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 = {}
@@ -1983,6 +1980,7 @@ 
 
         it = iter(revs)
         stopiteration = False
+
         for windowsize in increasingwindows():
             nrevs = []
             for i in xrange(windowsize):
@@ -1997,10 +1995,11 @@ 
                 ctx = change(rev)
                 if not fns:
                     def fns_generator():
+
                         if allfiles:
                             fiter = iter(ctx)
                         else:
-                            fiter = ctx.files()
+                            fiter = iter(ctx.files())
                         for f in fiter:
                             if match(f):
                                 yield f