diff --git a/mercurial/commands.py b/mercurial/commands.py --- a/mercurial/commands.py +++ b/mercurial/commands.py @@ -2513,7 +2513,7 @@ yield ('+', b[i]) def display(fm, fn, ctx, pstates, states): - rev = ctx.rev() + rev = scmutil.intrev(ctx) if fm.isplain(): formatuser = ui.shortuser else: @@ -2526,7 +2526,10 @@ @util.cachefunc def binary(): flog = getfile(fn) - return stringutil.binary(flog.read(ctx.filenode(fn))) + try: + return stringutil.binary(flog.read(ctx.filenode(fn))) + except error.WdirUnsupported: + return ctx[fn].isbinary() fieldnamemap = {'filename': 'file', 'linenumber': 'line_number'} if opts.get('all'): @@ -2535,7 +2538,8 @@ 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))) + cols = [ ('filename', fn, True), ('rev', rev, True), @@ -2601,8 +2605,10 @@ fnode = ctx.filenode(fn) except error.LookupError: continue - - copied = flog.renamed(fnode) + try: + copied = flog.renamed(fnode) + except error.WdirUnsupported: + copied = ctx[fn].renamed() copy = follow and copied and copied[0] if copy: copies.setdefault(rev, {})[fn] = copy @@ -2613,7 +2619,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]: 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:2147483647:export + port2:2147483647:vaportight + port2:2147483647:import/export + port2:2147483647:deport + port2:2147483647: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:2147483647:abracadara + + $ cd ..