Skip to content
Snippets Groups Projects
Commit ea51d416 authored by Linus Torvalds's avatar Linus Torvalds Committed by Junio C Hamano
Browse files

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: default avatarLinus Torvalds <torvalds@osdl.org>
Signed-off-by: default avatarJunio C Hamano <junkio@cox.net>
parent 7a3dd472
No related branches found
No related tags found
No related merge requests found
...@@ -41,6 +41,11 @@ int main(int argc, const char **argv) ...@@ -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 ...@@ -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 $*"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment