git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Teach "git diff" to handle filenames startign with '-'

From
Linus Torvalds <torvalds@osdl.org>
Date
Oct 18, 2005, 05:49 UTC
Message-ID
<Pine.LNX.4.64.0510172243560.3369@g5.osdl.org>
In-Reply-To
<Pine.LNX.4.64.0510171933200.3369@g5.osdl.org>

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>
---
On Mon, 17 Oct 2005, Linus Torvalds wrote:
> 
> Yes, I know it's ambigious at times, but it really is very convenient. 
> Usually we allow a "--" to say where a filename starts when it _is_ 
> ambiguous.

This is on top of the rev-parse.c diff (it's strictly independent, but it needs the rev-parse.c one to make any sense, since without the rev-parse.c fix for -- handling, "git diff" won't work regardless).

diff --git a/diff-files.c b/diff-files.c
index 8a8f9b6..1789939 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 84a152a..b3ec84b 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 $*"
Previous: Linus TorvaldsNext: Linus Torvalds
Message 8 of 10 in “git-checkout-index, flag ordering and --prefix kludgy handling”
  1. BlaisorbladeOct 16, 2005
  2. Junio C HamanoOct 17, 2005
  3. Linus TorvaldsOct 17, 2005
  4. Junio C HamanoOct 18, 2005
  5. Linus TorvaldsOct 18, 2005
  6. Junio C HamanoOct 18, 2005
  7. Linus TorvaldsOct 18, 2005
  8. Teach "git diff" to handle filenames startign with '-'Linus Torvalds, Oct 18, 2005
  9. Handle "-" at beginning of filenames, part 3Linus Torvalds, Oct 18, 2005
  10. git-checkout: revert specific paths to either index or a given tree-ish.Junio C Hamano, Oct 18, 2005

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.