D3673: grep: enables passing wdir as a revision in grep
sangeet259 (Sangeet Kumar Mishra)
phabricator at mercurial-scm.org
Wed May 30 13:31:35 UTC 2018
sangeet259 created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.
REVISION SUMMARY
When you pass wdir() to the -r flag, it catches the
WdirUnsupported error and fall back to and alternate path
REPOSITORY
rHG Mercurial
REVISION DETAIL
https://phab.mercurial-scm.org/D3673
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
@@ -250,8 +250,11 @@
$ hg stat
M port2
$ hg grep -r 'wdir()' port
- abort: working directory revision cannot be specified
- [255]
+ port2:export
+ port2:vaportight
+ port2:import/export
+ port2:deport
+ port2:wport
$ cd ..
$ hg init t2
@@ -368,3 +371,14 @@
binfile.bin:0:+: Binary file matches
$ cd ..
+
+Fix_Wdir(): test that passing wdir() t -r flag does greps on the
+files modified in the working directory
+
+ $ cd a
+ $ echo "abracadara" >> a
+ $ hg add a
+ $ hg grep -r "wdir()" "abra"
+ a:abracadara
+
+ $ cd ..
diff --git a/mercurial/commands.py b/mercurial/commands.py
--- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -2513,19 +2513,27 @@
@util.cachefunc
def binary():
flog = getfile(fn)
- return stringutil.binary(flog.read(ctx.filenode(fn)))
+ try:
+ content = flog.read(ctx.filenode(fn))
+ except error.WdirUnsupported:
+ content = ctx[fn].data()
+ return stringutil.binary(content)
fieldnamemap = {'filename': 'file', 'linenumber': 'line_number'}
if opts.get('all'):
iter = difflinestates(pstates, states)
else:
iter = [('', l) for l in states]
for change, l in iter:
fm.startitem()
- fm.data(node=fm.hexfunc(ctx.node()))
+ fm.data(node=fm.hexfunc(scmutil.binnode(ctx)))
+ if ctx._rev is None :
+ showrev = False
+ else :
+ showrev = True
cols = [
('filename', fn, True),
- ('rev', rev, True),
+ ('rev', rev, showrev),
('linenumber', l.linenum, opts.get('line_number')),
]
if opts.get('all'):
@@ -2588,8 +2596,10 @@
fnode = ctx.filenode(fn)
except error.LookupError:
continue
-
- copied = flog.renamed(fnode)
+ try:
+ copied = flog.renamed(fnode)
+ except error.WdirUnsupported :
+ copied = False
copy = follow and copied and copied[0]
if copy:
copies.setdefault(rev, {})[fn] = copy
@@ -2600,7 +2610,11 @@
files.append(fn)
if fn not in matches[rev]:
- grepbody(fn, rev, flog.read(fnode))
+ try:
+ content = flog.read(fnode)
+ except error.WdirUnsupported:
+ content = ctx[fn].data()
+ grepbody(fn, rev, content)
pfn = copy or fn
if pfn not in matches[parent]:
To: sangeet259, #hg-reviewers
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list