Merge branch 'jk/grep-double-dash'
* jk/grep-double-dash: accept "git grep -- pattern"
This commit is contained in:
commit
e7c2466593
@ -861,6 +861,16 @@ int cmd_grep(int argc, const char **argv, const char *prefix)
|
||||
PARSE_OPT_STOP_AT_NON_OPTION |
|
||||
PARSE_OPT_NO_INTERNAL_HELP);
|
||||
|
||||
/*
|
||||
* skip a -- separator; we know it cannot be
|
||||
* separating revisions from pathnames if
|
||||
* we haven't even had any patterns yet
|
||||
*/
|
||||
if (argc > 0 && !opt.pattern_list && !strcmp(argv[0], "--")) {
|
||||
argv++;
|
||||
argc--;
|
||||
}
|
||||
|
||||
/* First unrecognized non-option token */
|
||||
if (argc > 0 && !opt.pattern_list) {
|
||||
append_grep_pattern(&opt, argv[0], "command line", 0,
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user