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
--- 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):
--- 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,
)
--- 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