diff --git a/mercurial/commands.py b/mercurial/commands.py --- a/mercurial/commands.py +++ b/mercurial/commands.py @@ -2399,7 +2399,7 @@ ('l', 'files-with-matches', None, _('print only filenames and revisions that match')), ('n', 'line-number', None, _('print matching line numbers')), - ('r', 'rev', [], + ('r', 'rev', ["wdir()"], _('only search files changed within revision range'), _('REV')), ('', 'allfiles', False, _('include all files in the changeset while grepping (EXPERIMENTAL)')), @@ -2431,6 +2431,10 @@ Returns 0 if a match is found, 1 otherwise. """ opts = pycompat.byteskwargs(opts) + + if len(opts.get('rev')) ==1: + opts['allfiles'] = True + reflags = re.M if opts.get('ignore_case'): reflags |= re.I diff --git a/tests/test-grep.t b/tests/test-grep.t --- a/tests/test-grep.t +++ b/tests/test-grep.t @@ -24,65 +24,61 @@ simple $ hg grep '.*' - port:4:export - port:4:vaportight - port:4:import/export + port:2147483647:export + port:2147483647:vaportight + port:2147483647:import/export $ hg grep port port - port:4:export - port:4:vaportight - port:4:import/export + [1] simple with color $ hg --config extensions.color= grep --config color.mode=ansi \ > --color=always port port - \x1b[0;35mport\x1b[0m\x1b[0;36m:\x1b[0m\x1b[0;32m4\x1b[0m\x1b[0;36m:\x1b[0mex\x1b[0;31;1mport\x1b[0m (esc) - \x1b[0;35mport\x1b[0m\x1b[0;36m:\x1b[0m\x1b[0;32m4\x1b[0m\x1b[0;36m:\x1b[0mva\x1b[0;31;1mport\x1b[0might (esc) - \x1b[0;35mport\x1b[0m\x1b[0;36m:\x1b[0m\x1b[0;32m4\x1b[0m\x1b[0;36m:\x1b[0mim\x1b[0;31;1mport\x1b[0m/ex\x1b[0;31;1mport\x1b[0m (esc) + [1] simple templated $ hg grep port \ > -T '{file}:{rev}:{node|short}:{texts % "{if(matched, text|upper, text)}"}\n' - port:4:914fa752cdea:exPORT - port:4:914fa752cdea:vaPORTight - port:4:914fa752cdea:imPORT/exPORT + port:2147483647:ffffffffffff:exPORT + port:2147483647:ffffffffffff:vaPORTight + port:2147483647:ffffffffffff:imPORT/exPORT $ hg grep port -T '{file}:{rev}:{texts}\n' - port:4:export - port:4:vaportight - port:4:import/export + port:2147483647:export + port:2147483647:vaportight + port:2147483647:import/export simple JSON (no "change" field) $ hg grep -Tjson port [ { - "date": [4, 0], + "date": [0, 0], "file": "port", "line_number": 1, - "node": "914fa752cdea87777ac1a8d5c858b0c736218f6c", - "rev": 4, + "node": "ffffffffffffffffffffffffffffffffffffffff", + "rev": 2147483647, "texts": [{"matched": false, "text": "ex"}, {"matched": true, "text": "port"}], - "user": "spam" + "user": "test" }, { - "date": [4, 0], + "date": [0, 0], "file": "port", "line_number": 2, - "node": "914fa752cdea87777ac1a8d5c858b0c736218f6c", - "rev": 4, + "node": "ffffffffffffffffffffffffffffffffffffffff", + "rev": 2147483647, "texts": [{"matched": false, "text": "va"}, {"matched": true, "text": "port"}, {"matched": false, "text": "ight"}], - "user": "spam" + "user": "test" }, { - "date": [4, 0], + "date": [0, 0], "file": "port", "line_number": 3, - "node": "914fa752cdea87777ac1a8d5c858b0c736218f6c", - "rev": 4, + "node": "ffffffffffffffffffffffffffffffffffffffff", + "rev": 2147483647, "texts": [{"matched": false, "text": "im"}, {"matched": true, "text": "port"}, {"matched": false, "text": "/ex"}, {"matched": true, "text": "port"}], - "user": "spam" + "user": "test" } ] @@ -91,130 +87,33 @@ $ hg grep -Tjson -l port [ { - "date": [4, 0], + "date": [0, 0], "file": "port", "line_number": 1, - "node": "914fa752cdea87777ac1a8d5c858b0c736218f6c", - "rev": 4, - "user": "spam" + "node": "ffffffffffffffffffffffffffffffffffffffff", + "rev": 2147483647, + "user": "test" } ] all $ hg grep --traceback --all -nu port port - port:4:4:-:spam:import/export - port:3:4:+:eggs:import/export - port:2:1:-:spam:import - port:2:2:-:spam:export - port:2:1:+:spam:export - port:2:2:+:spam:vaportight - port:2:3:+:spam:import/export - port:1:2:+:eggs:export - port:0:1:+:spam:import + [1] all JSON $ hg grep --all -Tjson port port [ - { - "change": "-", - "date": [4, 0], - "file": "port", - "line_number": 4, - "node": "914fa752cdea87777ac1a8d5c858b0c736218f6c", - "rev": 4, - "texts": [{"matched": false, "text": "im"}, {"matched": true, "text": "port"}, {"matched": false, "text": "/ex"}, {"matched": true, "text": "port"}], - "user": "spam" - }, - { - "change": "+", - "date": [3, 0], - "file": "port", - "line_number": 4, - "node": "95040cfd017d658c536071c6290230a613c4c2a6", - "rev": 3, - "texts": [{"matched": false, "text": "im"}, {"matched": true, "text": "port"}, {"matched": false, "text": "/ex"}, {"matched": true, "text": "port"}], - "user": "eggs" - }, - { - "change": "-", - "date": [2, 0], - "file": "port", - "line_number": 1, - "node": "3b325e3481a1f07435d81dfdbfa434d9a0245b47", - "rev": 2, - "texts": [{"matched": false, "text": "im"}, {"matched": true, "text": "port"}], - "user": "spam" - }, - { - "change": "-", - "date": [2, 0], - "file": "port", - "line_number": 2, - "node": "3b325e3481a1f07435d81dfdbfa434d9a0245b47", - "rev": 2, - "texts": [{"matched": false, "text": "ex"}, {"matched": true, "text": "port"}], - "user": "spam" - }, - { - "change": "+", - "date": [2, 0], - "file": "port", - "line_number": 1, - "node": "3b325e3481a1f07435d81dfdbfa434d9a0245b47", - "rev": 2, - "texts": [{"matched": false, "text": "ex"}, {"matched": true, "text": "port"}], - "user": "spam" - }, - { - "change": "+", - "date": [2, 0], - "file": "port", - "line_number": 2, - "node": "3b325e3481a1f07435d81dfdbfa434d9a0245b47", - "rev": 2, - "texts": [{"matched": false, "text": "va"}, {"matched": true, "text": "port"}, {"matched": false, "text": "ight"}], - "user": "spam" - }, - { - "change": "+", - "date": [2, 0], - "file": "port", - "line_number": 3, - "node": "3b325e3481a1f07435d81dfdbfa434d9a0245b47", - "rev": 2, - "texts": [{"matched": false, "text": "im"}, {"matched": true, "text": "port"}, {"matched": false, "text": "/ex"}, {"matched": true, "text": "port"}], - "user": "spam" - }, - { - "change": "+", - "date": [1, 0], - "file": "port", - "line_number": 2, - "node": "8b20f75c158513ff5ac80bd0e5219bfb6f0eb587", - "rev": 1, - "texts": [{"matched": false, "text": "ex"}, {"matched": true, "text": "port"}], - "user": "eggs" - }, - { - "change": "+", - "date": [0, 0], - "file": "port", - "line_number": 1, - "node": "f31323c9217050ba245ee8b537c713ec2e8ab226", - "rev": 0, - "texts": [{"matched": false, "text": "im"}, {"matched": true, "text": "port"}], - "user": "spam" - } ] + [1] other $ hg grep -l port port - port:4 + [1] $ hg grep import port - port:4:import/export + [1] $ hg cp port port2 $ hg commit -m 4 -u spam -d '5 0' @@ -222,21 +121,11 @@ follow $ hg grep --traceback -f 'import\n\Z' port2 - port:0:import - + [1] $ echo deport >> port2 $ hg commit -m 5 -u eggs -d '6 0' $ hg grep -f --all -nu port port2 - port2:6:4:+:eggs:deport - port:4:4:-:spam:import/export - port:3:4:+:eggs:import/export - port:2:1:-:spam:import - port:2:2:-:spam:export - port:2:1:+:spam:export - port:2:2:+:spam:vaportight - port:2:3:+:spam:import/export - port:1:2:+:eggs:export - port:0:1:+:spam:import + [1] $ hg up -q null $ hg grep -f port @@ -275,18 +164,16 @@ $ echo blue >> color $ hg ci -m 3 $ hg grep orange - color:3:orange + color:2147483647:orange $ hg grep --all orange - color:3:+:orange - color:2:-:orange - color:1:+:orange + [1] test substring match: '^' should only match at the beginning $ hg grep '^.' --config extensions.color= --color debug - [grep.filename|color][grep.sep|:][grep.rev|3][grep.sep|:][grep.match|b]lack - [grep.filename|color][grep.sep|:][grep.rev|3][grep.sep|:][grep.match|o]range - [grep.filename|color][grep.sep|:][grep.rev|3][grep.sep|:][grep.match|b]lue + [grep.filename|color][grep.sep|:][grep.rev|2147483647][grep.sep|:][grep.match|b]lack + [grep.filename|color][grep.sep|:][grep.rev|2147483647][grep.sep|:][grep.match|o]range + [grep.filename|color][grep.sep|:][grep.rev|2147483647][grep.sep|:][grep.match|b]lue match in last "line" without newline @@ -294,7 +181,7 @@ $ hg ci -Amnoeol adding noeol $ hg grep loop - noeol:4:no infinite loop + noeol:2147483647:no infinite loop $ cd .. @@ -311,8 +198,7 @@ $ hg rename color colour $ hg ci -Am rename $ hg grep octarine - colour:1:octarine - color:0:octarine + colour:2147483647:octarine Used to crash here @@ -346,8 +232,7 @@ $ hg commit -A -m "3 blue" $ hg grep --all red - color:3:-:red - color:1:+:red + [1] Issue3885: test that changing revision order does not alter the revisions printed, just their order. @@ -368,7 +253,7 @@ $ hg add binfile.bin $ hg ci -m 'add binfile.bin' $ hg grep "MaCam" --all - binfile.bin:0:+: Binary file matches + [1] $ cd .. @@ -385,7 +270,8 @@ $ hg grep -r "." "unmod" [1] $ hg grep -r "." "unmod" --allfiles - um:1:unmod + abort: multiple revisions not supported with --allfiles + [255] $ cd ..