parse-options: disable option abbreviation with PARSE_OPT_KEEP_UNKNOWN
parse-options can unambiguously find an abbreviation only if it sees all available options. This is usually the case when you use parse_options(). But there are other callers like blame or shortlog which uses parse_options_start() in combination with a custom option parser, like rev-list. parse-options cannot see all options in this case and will get abbrev detection wrong. Disable it. t7800 needs update because --symlink no longer expands to --symlinks and will be passed down to git-diff, which will not recognize it. I still think this is the correct thing to do. But if --symlink has been actually used in the wild, we would just add an option alias for it. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
							parent
							
								
									202fbb3315
								
							
						
					
					
						commit
						baa4adc66a
					
				|  | @ -266,7 +266,8 @@ again: | |||
| 		} | ||||
| 		if (!rest) { | ||||
| 			/* abbreviated? */ | ||||
| 			if (!strncmp(long_name, arg, arg_end - arg)) { | ||||
| 			if (!(p->flags & PARSE_OPT_KEEP_UNKNOWN) && | ||||
| 			    !strncmp(long_name, arg, arg_end - arg)) { | ||||
| is_abbreviated: | ||||
| 				if (abbrev_option) { | ||||
| 					/* | ||||
|  |  | |||
|  | @ -546,7 +546,7 @@ do | |||
| done >actual | ||||
| EOF | ||||
|  | ||||
| test_expect_success SYMLINKS 'difftool --dir-diff --symlink without unstaged changes' ' | ||||
| test_expect_success SYMLINKS 'difftool --dir-diff --symlinks without unstaged changes' ' | ||||
| 	cat >expect <<-EOF && | ||||
| 	file | ||||
| 	$PWD/file | ||||
|  | @ -555,7 +555,7 @@ test_expect_success SYMLINKS 'difftool --dir-diff --symlink without unstaged cha | |||
| 	sub/sub | ||||
| 	$PWD/sub/sub | ||||
| 	EOF | ||||
| 	git difftool --dir-diff --symlink \ | ||||
| 	git difftool --dir-diff --symlinks \ | ||||
| 		--extcmd "./.git/CHECK_SYMLINKS" branch HEAD && | ||||
| 	test_cmp expect actual | ||||
| ' | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Nguyễn Thái Ngọc Duy
						Nguyễn Thái Ngọc Duy