Merge branch 'jk/grep-double-dash'
* jk/grep-double-dash: accept "git grep -- pattern"
This commit is contained in:
		@ -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
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user