diff --git a/mercurial/cmdutil.py b/mercurial/cmdutil.py --- a/mercurial/cmdutil.py +++ b/mercurial/cmdutil.py @@ -1881,6 +1881,7 @@ yielding each context, the iterator will first call the prepare function on each context in the window in forward order.''' + unmodified = opts.get('unmodified') follow = opts.get('follow') or opts.get('follow_first') revs = _walkrevs(repo, opts) if not revs: @@ -1990,7 +1991,11 @@ ctx = change(rev) if not fns: def fns_generator(): - for f in ctx.files(): + if unmodified and len(revs) == 1: + fiter = iter(ctx) + else: + fiter = ctx.files() + for f in fiter: if match(f): yield f fns = fns_generator() diff --git a/mercurial/commands.py b/mercurial/commands.py --- a/mercurial/commands.py +++ b/mercurial/commands.py @@ -2408,6 +2408,8 @@ ('n', 'line-number', None, _('print matching line numbers')), ('r', 'rev', [], _('only search files changed within revision range'), _('REV')), + ('', 'unmodified', False, + _('include all files in the changeset while grepping')), ('u', 'user', None, _('list the author (long with -v)')), ('d', 'date', None, _('list the date (short with -q)')), ] + formatteropts + walkopts, diff --git a/tests/test-grep.t b/tests/test-grep.t --- a/tests/test-grep.t +++ b/tests/test-grep.t @@ -368,3 +368,15 @@ binfile.bin:0:+: Binary file matches $ cd .. + +Test for showing working of unmodified flag + + $ hg init sng + $ cd sng + $ echo "unmod" >> um + $ hg ci -A -m "adds unmod to um" + adding um + $ hg grep -r "-1" "unmod" --unmodified + um:0:unmod + + $ cd ..