grep: allow -E and -n to be turned on by default via configuration

Add two configration variables grep.extendedRegexp and grep.lineNumbers to
allow the user to skip typing -E and -n on the command line, respectively.

Scripts that are meant to be used by random users and/or in random
repositories now have use -G and/or --no-line-number options as
appropriately to override the settings in the repository or user's
~/.gitconfig settings. Just because the script didn't say "git grep -n" no
longer guarantees that the output from the command will not have line
numbers.

Signed-off-by: Joe Ratterman <jratt0@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Joe Ratterman 2011-03-30 14:31:05 -05:00 committed by Junio C Hamano
parent 61e8aaf621
commit b22520a37c
4 changed files with 52 additions and 1 deletions

View File

@ -1098,6 +1098,12 @@ All gitcvs variables except for 'gitcvs.usecrlfattr' and
is one of "ext" and "pserver") to make them apply only for the given is one of "ext" and "pserver") to make them apply only for the given
access method. access method.
grep.lineNumber::
If set to true, enable '-n' option by default.
grep.extendedRegexp::
If set to true, enable '--extended-regexp' option by default.
gui.commitmsgwidth:: gui.commitmsgwidth::
Defines how wide the commit message window is in the Defines how wide the commit message window is in the
linkgit:git-gui[1]. "75" is the default. linkgit:git-gui[1]. "75" is the default.

View File

@ -31,6 +31,16 @@ Look for specified patterns in the tracked files in the work tree, blobs
registered in the index file, or blobs in given tree objects. registered in the index file, or blobs in given tree objects.
CONFIGURATION
-------------
grep.lineNumber::
If set to true, enable '-n' option by default.
grep.extendedRegexp::
If set to true, enable '--extended-regexp' option by default.
OPTIONS OPTIONS
------- -------
--cached:: --cached::

View File

@ -302,6 +302,19 @@ static int grep_config(const char *var, const char *value, void *cb)
default: return 0; default: return 0;
} }
if (!strcmp(var, "grep.extendedregexp")) {
if (git_config_bool(var, value))
opt->regflags |= REG_EXTENDED;
else
opt->regflags &= ~REG_EXTENDED;
return 0;
}
if (!strcmp(var, "grep.linenumber")) {
opt->linenum = git_config_bool(var, value);
return 0;
}
if (!strcmp(var, "color.grep")) if (!strcmp(var, "color.grep"))
opt->color = git_config_colorbool(var, value, -1); opt->color = git_config_colorbool(var, value, -1);
else if (!strcmp(var, "color.grep.context")) else if (!strcmp(var, "color.grep.context"))

View File

@ -59,7 +59,29 @@ do
echo ${HC}file:4:foo mmap bar_mmap echo ${HC}file:4:foo mmap bar_mmap
echo ${HC}file:5:foo_mmap bar mmap baz echo ${HC}file:5:foo_mmap bar mmap baz
} >expected && } >expected &&
git grep -n -w -e mmap $H >actual && git -c grep.linenumber=false grep -n -w -e mmap $H >actual &&
test_cmp expected actual
'
test_expect_success "grep -w $L" '
{
echo ${HC}file:1:foo mmap bar
echo ${HC}file:3:foo_mmap bar mmap
echo ${HC}file:4:foo mmap bar_mmap
echo ${HC}file:5:foo_mmap bar mmap baz
} >expected &&
git -c grep.linenumber=true grep -w -e mmap $H >actual &&
test_cmp expected actual
'
test_expect_success "grep -w $L" '
{
echo ${HC}file:foo mmap bar
echo ${HC}file:foo_mmap bar mmap
echo ${HC}file:foo mmap bar_mmap
echo ${HC}file:foo_mmap bar mmap baz
} >expected &&
git -c grep.linenumber=true grep --no-line-number -w -e mmap $H >actual &&
test_cmp expected actual test_cmp expected actual
' '