accept "git grep -- pattern"
Currently the only way to "quote" a grep pattern that might begin with a dash is to use "git grep -e pattern". This works just fine, and is also the way right way to do it on many traditional grep implemenations. Some people prefer to use "git grep -- pattern", however, as "--" is the usual "end of options" marker, and at least GNU grep and Solaris 10 grep support this. This patch makes that syntax work. There is a slight behavior change, in that "git grep -- $X" used to be interpreted as "grep for -- in $X". However, that usage is questionable. "--" is usually the end-of-options marker, so "git grep" was unlike many other greps in treating it as a literal pattern (e.g., both GNU grep and Solaris 10 grep will treat "grep --" as missing a pattern). Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
3c8f6c8c4f
commit
1123c67cee
@ -434,4 +434,37 @@ test_expect_success 'grep -Fi' '
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
||||
test_expect_success 'setup double-dash tests' '
|
||||
cat >double-dash <<EOF &&
|
||||
--
|
||||
->
|
||||
other
|
||||
EOF
|
||||
git add double-dash
|
||||
'
|
||||
|
||||
cat >expected <<EOF
|
||||
double-dash:->
|
||||
EOF
|
||||
test_expect_success 'grep -- pattern' '
|
||||
git grep -- "->" >actual &&
|
||||
test_cmp expected actual
|
||||
'
|
||||
test_expect_success 'grep -- pattern -- pathspec' '
|
||||
git grep -- "->" -- double-dash >actual &&
|
||||
test_cmp expected actual
|
||||
'
|
||||
test_expect_success 'grep -e pattern -- path' '
|
||||
git grep -e "->" -- double-dash >actual &&
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
||||
cat >expected <<EOF
|
||||
double-dash:--
|
||||
EOF
|
||||
test_expect_success 'grep -e -- -- path' '
|
||||
git grep -e -- -- double-dash >actual &&
|
||||
test_cmp expected actual
|
||||
'
|
||||
|
||||
test_done
|
||||
|
Reference in New Issue
Block a user