Patchwork D3763: grep: add `--diff` flag

login
register
mail settings
Submitter phabricator
Date June 19, 2018, 8:43 a.m.
Message ID <9d962c31d3b562f01d205652475a2a7b@localhost.localdomain>
Download mbox | patch
Permalink /patch/32319/
State Not Applicable
Headers show

Comments

phabricator - June 19, 2018, 8:43 a.m.
sangeet259 updated this revision to Diff 9217.

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST UPDATE
  https://phab.mercurial-scm.org/D3763?vs=9125&id=9217

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

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

CHANGE DETAILS




To: sangeet259, #hg-reviewers
Cc: pulkit, mercurial-devel
Yuya Nishihara - June 21, 2018, 12:18 p.m.
Queued, thanks.

Can you send a follow-up to deprecate the --all option?
It doesn't make sense to provide both --all and --diff in user help.

>      [('0', 'print0', None, _('end fields with NUL')),
>      ('', 'all', None, _('print all revisions that match')),
> +    ('', 'diff', None, _('print all revisions when the term was introduced or removed')),

Next time, please make sure `test-check-*` pass.
phabricator - June 21, 2018, 12:43 p.m.
yuja added a comment.


  Queued, thanks.
  
  Can you send a follow-up to deprecate the --all option?
  It doesn't make sense to provide both --all and --diff in user help.
  
  >   [('0', 'print0', None, _('end fields with NUL')),
  >   ('', 'all', None, _('print all revisions that match')),
  > 
  > +    ('', 'diff', None, _('print all revisions when the term was introduced or removed')),
  
  Next time, please make sure `test-check-*` pass.

REPOSITORY
  rHG Mercurial

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

To: sangeet259, #hg-reviewers
Cc: yuja, pulkit, 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
@@ -281,6 +281,11 @@ 
   color:2:-:orange
   color:1:+:orange
 
+  $ hg grep --diff orange
+  color:3:+:orange
+  color:2:-:orange
+  color:1:+:orange
+
 test substring match: '^' should only match at the beginning
 
   $ hg grep '^.' --config extensions.color= --color debug
@@ -349,6 +354,10 @@ 
   color:3:-:red
   color:1:+:red
 
+  $ hg grep --diff red
+  color:3:-:red
+  color:1:+:red
+
 Issue3885: test that changing revision order does not alter the
 revisions printed, just their order.
 
@@ -360,6 +369,14 @@ 
   color:3:-:red
   color:1:+:red
 
+  $ hg grep --diff red -r "all()"
+  color:1:+:red
+  color:3:-:red
+
+  $ hg grep --diff red -r "reverse(all())"
+  color:3:-:red
+  color:1:+:red
+
   $ cd ..
 
   $ hg init a
@@ -370,6 +387,9 @@ 
   $ hg grep "MaCam" --all
   binfile.bin:0:+: Binary file matches
 
+  $ hg grep "MaCam" --diff
+  binfile.bin:0:+: Binary file matches
+
   $ cd ..
 
 Fix_Wdir(): test that passing wdir() t -r flag does greps on the
diff --git a/mercurial/commands.py b/mercurial/commands.py
--- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -2416,6 +2416,7 @@ 
 @command('grep',
     [('0', 'print0', None, _('end fields with NUL')),
     ('', 'all', None, _('print all revisions that match')),
+    ('', 'diff', None, _('print all revisions when the term was introduced or removed')),
     ('a', 'text', None, _('treat all files as text')),
     ('f', 'follow', None,
      _('follow changeset history,'
@@ -2442,7 +2443,7 @@ 
     file in which it finds a match. To get it to print every revision
     that contains a change in match status ("-" for a match that becomes
     a non-match, or "+" for a non-match that becomes a match), use the
-    --all flag.
+    --diff/--all flag.
 
     PATTERN can be any Python (roughly Perl-compatible) regular
     expression.
@@ -2454,6 +2455,7 @@ 
     Returns 0 if a match is found, 1 otherwise.
     """
     opts = pycompat.byteskwargs(opts)
+    diff = opts.get('all') or opts.get('diff')
     reflags = re.M
     if opts.get('ignore_case'):
         reflags |= re.I
@@ -2550,7 +2552,7 @@ 
                 return ctx[fn].isbinary()
 
         fieldnamemap = {'filename': 'file', 'linenumber': 'line_number'}
-        if opts.get('all'):
+        if diff:
             iter = difflinestates(pstates, states)
         else:
             iter = [('', l) for l in states]
@@ -2563,7 +2565,7 @@ 
                 ('rev', rev, True),
                 ('linenumber', l.linenum, opts.get('line_number')),
             ]
-            if opts.get('all'):
+            if diff:
                 cols.append(('change', change, True))
             cols.extend([
                 ('user', formatuser(ctx.user()), opts.get('user')),
@@ -2667,7 +2669,7 @@ 
             if pstates or states:
                 r = display(fm, fn, ctx, pstates, states)
                 found = found or r
-                if r and not opts.get('all'):
+                if r and not diff:
                     skip[fn] = True
                     if copy:
                         skip[copy] = True