]> git.ipfire.org Git - thirdparty/git.git/commitdiff
grep: allow -E and -n to be turned on by default via configuration
authorJoe Ratterman <jratt0@gmail.com>
Wed, 30 Mar 2011 19:31:05 +0000 (14:31 -0500)
committerJunio C Hamano <gitster@pobox.com>
Wed, 30 Mar 2011 20:17:07 +0000 (13:17 -0700)
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>
Documentation/config.txt
Documentation/git-grep.txt
builtin/grep.c
t/t7810-grep.sh

index 8ea55d46add1da6d1e810cb126a7ecc5ce456650..01d5fabc4c4a84641c0d95c201949d4345905fe5 100644 (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
 access method.
 
 is one of "ext" and "pserver") to make them apply only for the given
 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::
        Defines how wide the commit message window is in the
        linkgit:git-gui[1]. "75" is the default.
 gui.commitmsgwidth::
        Defines how wide the commit message window is in the
        linkgit:git-gui[1]. "75" is the default.
index 132505eb4f83fdc64778df8cf58b595ca6eadf1f..d7523b3e45ff06bd7a8abf4ff466fe619c8268e7 100644 (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
 -------
 --cached::
 OPTIONS
 -------
 --cached::
index 85e9583a1335330f8e852d7937abb10c97798bc0..5743d920d49af64c310f1047b90dc326dcdce371 100644 (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"))
                opt->color = git_config_colorbool(var, value, -1);
        else if (!strcmp(var, "color.grep.context"))
        if (!strcmp(var, "color.grep"))
                opt->color = git_config_colorbool(var, value, -1);
        else if (!strcmp(var, "color.grep.context"))
index dbc6cd8a775a43efbd8fdf433958ccd090b6e3ab..8184c264cf942bcd8e6c2f75b5526ddfdc5a11e9 100755 (executable)
@@ -59,7 +59,29 @@ do
                        echo ${HC}file:4:foo mmap bar_mmap
                        echo ${HC}file:5:foo_mmap bar mmap baz
                } >expected &&
                        echo ${HC}file:4:foo mmap bar_mmap
                        echo ${HC}file:5:foo_mmap bar mmap baz
                } >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
        '