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

[PATCH] diff: fix "git show -C -C" output when renaming a binary file

From
Christian Couder <chriscool@tuxfamily.org>
Date
May 26, 2010, 02:50 UTC
Message-ID
<20100526025013.25696.26816.chriscool@tuxfamily.org>

A bug was introduced in 3e97c7c6af2901cec63bf35fcd43ae3472e24af8 (No diff -b/-w output for all-whitespace changes, Nov 19 2009) that made the lines:

diff --git a/bar b/sub/bar
similarity index 100%
rename from bar
rename to sub/bar

disappear from "git show -C -C" output when file bar is a binary
file.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
---
 diff.c                        |    4 +++
 t/t4043-diff-rename-binary.sh |   45 +++++++++++++++++++++++++++++++++++++++++
 2 files changed, 49 insertions(+), 0 deletions(-)
 create mode 100755 t/t4043-diff-rename-binary.sh

diff --git a/diff.c b/diff.c
index 494f560..0b00271 100644
--- a/diff.c
+++ b/diff.c
@@ -1737,6 +1737,10 @@ static void builtin_diff(const char *name_a,
 						textconv_one, textconv_two, o);
 			o->found_changes = 1;
 			goto free_ab_and_return;
+		} else if (diff_filespec_is_binary(one) &&
+			   diff_filespec_is_binary(two)) {
+			fprintf(o->file, "%s", header.buf);
+			strbuf_reset(&header);
 		}
 	}
 
diff --git a/t/t4043-diff-rename-binary.sh b/t/t4043-diff-rename-binary.sh
new file mode 100755
index 0000000..0601281
--- /dev/null
+++ b/t/t4043-diff-rename-binary.sh
@@ -0,0 +1,45 @@
+#!/bin/sh
+#
+# Copyright (c) 2010 Jakub Narebski, Christian Couder
+#
+
+test_description='Move a binary file'
+
+. ./test-lib.sh
+
+
+test_expect_success 'prepare repository' '
+	git init &&
+	echo foo > foo &&
+	echo "barQ" | q_to_nul > bar &&
+	git add . &&
+	git commit -m "Initial commit"
+'
+
+test_expect_success 'move the files into a "sub" directory' '
+	mkdir sub &&
+	git mv bar foo sub/ &&
+	git commit -m "Moved to sub/"
+'
+
+cat > expected <<\EOF
+ bar => sub/bar |  Bin 5 -> 5 bytes
+ foo => sub/foo |    0
+ 2 files changed, 0 insertions(+), 0 deletions(-)
+
+diff --git a/bar b/sub/bar
+similarity index 100%
+rename from bar
+rename to sub/bar
+diff --git a/foo b/sub/foo
+similarity index 100%
+rename from foo
+rename to sub/foo
+EOF
+
+test_expect_success 'git show -C -C report renames' '
+	git show -C -C --raw --binary --stat | tail -n 12 > current &&
+	test_cmp expected current
+'
+
+test_done
-- 
1.7.1.226.g770c5.dirty
Next: Junio C Hamano
Message 1 of 4 in “diff: fix "git show -C -C" output when renaming a binary file”
  1. diff: fix "git show -C -C" output when renaming a binary fileChristian Couder, May 26, 2010
  2. Junio C HamanoMay 29, 2010
  3. Junio C HamanoJun 2, 2010
  4. Christian CouderJun 3, 2010

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.