From ea51d416c02bb26e9d7600f87b27deb42752e6b5 Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Tue, 18 Oct 2005 00:16:45 -0700 Subject: [PATCH] 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 Signed-off-by: Junio C Hamano --- diff-files.c | 5 +++++ git-diff.sh | 8 ++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/diff-files.c b/diff-files.c index 8a8f9b6dc..17899390b 100644 --- a/diff-files.c +++ b/diff-files.c @@ -41,6 +41,11 @@ int main(int argc, const char **argv) git_config(git_default_config); diff_setup(&diff_options); while (1 < argc && argv[1][0] == '-') { + if (!strcmp(argv[1], "--")) { + argv++; + argc--; + break; + } if (!strcmp(argv[1], "-q")) silent = 1; else if (!strcmp(argv[1], "-r")) diff --git a/git-diff.sh b/git-diff.sh index 84a152af2..b3ec84be6 100755 --- a/git-diff.sh +++ b/git-diff.sh @@ -28,16 +28,16 @@ case "$rev" in ?*' '^?*) begin=$(expr "$rev" : '.*^.\([0-9a-f]*\).*') && 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 $*" -- 2.30.2