Enables the -P flag for perl regexps by default. When both the perlRegexp and extendedRegexp options are enabled, the last enabled option wins. --- Documentation/config.txt | 6 ++++++ Documentation/git-grep.txt | 6 ++++++ builtin/grep.c | 17 +++++++++++++++-- t/t7810-grep.sh | 34 ++++++++++++++++++++++++++++++++++ 4 files changed, 61 insertions(+), 2 deletions(-) diff --git a/Documentation/config.txt b/Documentation/config.txt index a95e5a4..ff3019b 100644 --- a/Documentation/config.txt +++ b/Documentation/config.txt @@ -1213,6 +1213,12 @@ grep.lineNumber:: grep.extendedRegexp:: If set to true, enable '--extended-regexp' option by default. +grep.perlRegexp:: + If set to true, enable '--perl-regexp' option by default. + +When both the 'grep.extendedRegexp' and 'grep.perlRegexp' options +are used, the last enabled option wins. + gpg.program:: Use this custom program instead of "gpg" found on $PATH when making or verifying a PGP signature. The program must support the diff --git a/Documentation/git-grep.txt b/Documentation/git-grep.txt index 3bec036..8816968 100644 --- a/Documentation/git-grep.txt +++ b/Documentation/git-grep.txt @@ -45,6 +45,12 @@ grep.lineNumber:: grep.extendedRegexp:: If set to true, enable '--extended-regexp' option by default. +grep.perlRegexp:: + If set to true, enable '--perl-regexp' option by default. + +When both the 'grep.extendedRegexp' and 'grep.perlRegexp' options +are used, the last enabled option wins. + OPTIONS ------- diff --git a/builtin/grep.c b/builtin/grep.c index 29adb0a..b4475e6 100644 --- a/builtin/grep.c +++ b/builtin/grep.c @@ -268,11 +268,24 @@ static int grep_config(const char *var, const char *value, void *cb) if (userdiff_config(var, value) < 0) return -1; + if (!strcmp(var, "grep.perlregexp")) { + if (git_config_bool(var, value)) { + opt->fixed = 0; + opt->pcre = 1; + } else { + opt->pcre = 0; + } + return 0; + } + if (!strcmp(var, "grep.extendedregexp")) { - if (git_config_bool(var, value)) + if (git_config_bool(var, value)) { opt->regflags |= REG_EXTENDED; - else + opt->pcre = 0; + opt->fixed = 0; + } else { opt->regflags &= ~REG_EXTENDED; + } return 0; } diff --git a/t/t7810-grep.sh b/t/t7810-grep.sh index 24e9b19..5479dc9 100755 --- a/t/t7810-grep.sh +++ b/t/t7810-grep.sh @@ -729,6 +729,40 @@ test_expect_success LIBPCRE 'grep -P pattern' ' test_cmp expected actual ' +test_expect_success LIBPCRE 'grep pattern with grep.perlRegexp=true' ' + git \ + -c grep.perlregexp=true \ + grep "\p{Ps}.*?\p{Pe}" hello.c >actual && + test_cmp expected actual +' + +test_expect_success LIBPCRE 'grep pattern with grep.perlRegexp=true and then grep.extendedRegexp=true' ' + test_must_fail git \ + -c grep.perlregexp=true \ + -c grep.extendedregexp=true \ + grep "\p{Ps}.*?\p{Pe}" hello.c +' + +test_expect_success LIBPCRE 'grep pattern with grep.extendedRegexp=true and then grep.perlRegexp=true' ' + git \ + -c grep.extendedregexp=true \ + -c grep.perlregexp=true \ + grep "\p{Ps}.*?\p{Pe}" hello.c >actual && + test_cmp expected actual +' + +test_expect_success LIBPCRE 'grep -E pattern with grep.perlRegexp=true' ' + test_must_fail git \ + -c grep.perlregexp=true \ + grep -E "\p{Ps}.*?\p{Pe}" hello.c +' + +test_expect_success LIBPCRE 'grep -G pattern with grep.perlRegexp=true' ' + test_must_fail git \ + -c grep.perlregexp=true \ + grep -G "\p{Ps}.*?\p{Pe}" hello.c +' + test_expect_success 'grep pattern with grep.extendedRegexp=true' ' >empty && test_must_fail git -c grep.extendedregexp=true \ -- 1.7.11.3 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html