# HG changeset patch # User Yuya Nishihara # Date 1531313507 -32400 # Node ID 5e4027db52f4147391b8c9d4a7bb9b472a782bcb # Parent eba69ddd4e52f9ab12f1ea01177891d3169aa298 grep: add config knob to enable/disable the default wdir search This allows us to conditionally enable the new behavior to unbreak python-hglib. See the next patch. The config option is undocumented since the --all-files is still experimental and isn't fully implemented. It can be moved to [experimental] if that's preferred. Differential Revision: https://phab.mercurial-scm.org/D3918 diff -r eba69ddd4e52 -r 5e4027db52f4 mercurial/commands.py --- a/mercurial/commands.py Wed Jul 11 21:35:31 2018 +0900 +++ b/mercurial/commands.py Wed Jul 11 21:51:47 2018 +0900 @@ -2501,7 +2501,7 @@ ('n', 'line-number', None, _('print matching line numbers')), ('r', 'rev', [], _('only search files changed within revision range'), _('REV')), - ('', 'all-files', False, + ('', 'all-files', None, _('include all files in the changeset while grepping (EXPERIMENTAL)')), ('u', 'user', None, _('list the author (long with -v)')), ('d', 'date', None, _('list the date (short with -q)')), @@ -2535,6 +2535,10 @@ diff = opts.get('all') or opts.get('diff') if diff and opts.get('all_files'): raise error.Abort(_('--diff and --all-files are mutually exclusive')) + # TODO: remove "not opts.get('rev')" if --all-files -rMULTIREV gets working + if opts.get('all_files') is None and not opts.get('rev') and not diff: + # experimental config: commands.grep.all-files + opts['all_files'] = ui.configbool('commands', 'grep.all-files') if opts.get('all_files') and not opts.get('rev'): opts['rev'] = ['wdir()'] @@ -2550,10 +2554,6 @@ if opts.get('print0'): sep = eol = '\0' - if not opts.get('rev') and not diff: - opts['rev'] = ["wdir()"] - opts['all_files'] = True - getfile = util.lrucachefunc(repo.file) def matchlines(body): diff -r eba69ddd4e52 -r 5e4027db52f4 mercurial/configitems.py --- a/mercurial/configitems.py Wed Jul 11 21:35:31 2018 +0900 +++ b/mercurial/configitems.py Wed Jul 11 21:51:47 2018 +0900 @@ -187,6 +187,9 @@ coreconfigitem('color', 'pagermode', default=dynamicdefault, ) +coreconfigitem('commands', 'grep.all-files', + default=True, +) coreconfigitem('commands', 'show.aliasprefix', default=list, ) diff -r eba69ddd4e52 -r 5e4027db52f4 tests/test-grep.t --- a/tests/test-grep.t Wed Jul 11 21:35:31 2018 +0900 +++ b/tests/test-grep.t Wed Jul 11 21:51:47 2018 +0900 @@ -424,12 +424,25 @@ $ hg grep --all-files -r. mod um:1:unmod +commands.all-files can be negated by --no-all-files + + $ hg grep --config commands.grep.all-files=True mod + new:2147483647:modified + um:2147483647:unmod + $ hg grep --config commands.grep.all-files=True --no-all-files mod + um:0:unmod + --diff --all-files makes no sense since --diff is the option to grep history $ hg grep --diff --all-files um abort: --diff and --all-files are mutually exclusive [255] +but --diff should precede the commands.grep.all-files option + + $ hg grep --config commands.grep.all-files=True --diff mod + um:0:+:unmod + $ cd .. Fix_Wdir(): test that passing wdir() t -r flag does greps on the