Teach "git diff" to handle filenames starting with '-'
It adds "--" to the git-diff.sh scripts, to keep any filenames that start with a "-" from being confused with an option. But in order to do that, it needs to teach git-diff-files to honor "--". Signed-off-by: Linus Torvalds <torvalds@osdl.org> Signed-off-by: Junio C Hamano <junkio@cox.net>maint
parent
7a3dd472ad
commit
ea51d416c0
|
|
@ -41,6 +41,11 @@ int main(int argc, const char **argv)
|
||||||
git_config(git_default_config);
|
git_config(git_default_config);
|
||||||
diff_setup(&diff_options);
|
diff_setup(&diff_options);
|
||||||
while (1 < argc && argv[1][0] == '-') {
|
while (1 < argc && argv[1][0] == '-') {
|
||||||
|
if (!strcmp(argv[1], "--")) {
|
||||||
|
argv++;
|
||||||
|
argc--;
|
||||||
|
break;
|
||||||
|
}
|
||||||
if (!strcmp(argv[1], "-q"))
|
if (!strcmp(argv[1], "-q"))
|
||||||
silent = 1;
|
silent = 1;
|
||||||
else if (!strcmp(argv[1], "-r"))
|
else if (!strcmp(argv[1], "-r"))
|
||||||
|
|
|
||||||
|
|
@ -28,16 +28,16 @@ case "$rev" in
|
||||||
?*' '^?*)
|
?*' '^?*)
|
||||||
begin=$(expr "$rev" : '.*^.\([0-9a-f]*\).*') &&
|
begin=$(expr "$rev" : '.*^.\([0-9a-f]*\).*') &&
|
||||||
end=$(expr "$rev" : '.\([0-9a-f]*\). .*') || exit
|
end=$(expr "$rev" : '.\([0-9a-f]*\). .*') || exit
|
||||||
cmd="git-diff-tree $flags $begin $end $files"
|
cmd="git-diff-tree $flags $begin $end -- $files"
|
||||||
;;
|
;;
|
||||||
?*' '?*)
|
?*' '?*)
|
||||||
cmd="git-diff-tree $flags $rev $files"
|
cmd="git-diff-tree $flags $rev -- $files"
|
||||||
;;
|
;;
|
||||||
?*' ')
|
?*' ')
|
||||||
cmd="git-diff-index $flags $rev $files"
|
cmd="git-diff-index $flags $rev -- $files"
|
||||||
;;
|
;;
|
||||||
'')
|
'')
|
||||||
cmd="git-diff-files $flags $files"
|
cmd="git-diff-files $flags -- $files"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
die "I don't understand $*"
|
die "I don't understand $*"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue