D3826: grep: change default behaviour of grep
sangeet259 (Sangeet Kumar Mishra)
phabricator at mercurial-scm.org
Mon Jul 9 09:50:47 UTC 2018
sangeet259 updated this revision to Diff 9472.
sangeet259 edited the summary of this revision.
REPOSITORY
rHG Mercurial
CHANGES SINCE LAST UPDATE
https://phab.mercurial-scm.org/D3826?vs=9470&id=9472
REVISION DETAIL
https://phab.mercurial-scm.org/D3826
AFFECTED FILES
mercurial/commands.py
tests/test-grep.t
CHANGE DETAILS
diff --git a/tests/test-grep.t b/tests/test-grep.t
--- a/tests/test-grep.t
+++ b/tests/test-grep.t
@@ -24,79 +24,75 @@
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"
}
]
simple JSON without matching lines
$ 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"
}
]
@@ -212,18 +208,17 @@
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'
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
@@ -275,7 +270,7 @@
$ 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
@@ -289,17 +284,17 @@
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
$ $PYTHON -c 'fp = open("noeol", "wb"); fp.write(b"no infinite loop"); fp.close();'
$ hg ci -Amnoeol
adding noeol
$ hg grep loop
- noeol:4:no infinite loop
+ noeol:2147483647:no infinite loop
$ cd ..
@@ -316,8 +311,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
@@ -419,3 +413,14 @@
a:2147483647:abracadara
$ cd ..
+
+Change Default of grep, that is, the files not in current working directory
+should not be grepp-ed on
+ $ hg init ab
+ $ cd ab
+ $ echo "some text">>file1
+ $ hg add file1
+ $ hg commit -m "adds file1"
+ $ hg mv file1 file2
+ $ hg grep "some"
+file2:2147483647:some text
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')
+ # pu.db
reflags = re.M
if opts.get('ignore_case'):
reflags |= re.I
@@ -2544,6 +2545,10 @@
if opts.get('print0'):
sep = eol = '\0'
+ if not opts.get('rev') and not diff:
+ opts.get('rev').append("wdir()")
+ opts['allfiles'] = True
+
getfile = util.lrucachefunc(repo.file)
def matchlines(body):
To: sangeet259, #hg-reviewers
Cc: yuja, mercurial-devel
More information about the Mercurial-devel
mailing list