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

[PATCH 3/3] git-merge-file: refuse to merge binary files

From
Johannes Schindelin <johannes.schindelin@gmx.de>
Date
Jun 5, 2007, 02:37 UTC
Message-ID
<Pine.LNX.4.64.0706050337010.4046@racer.site>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
---
 builtin-merge-file.c  |    6 +++++-
 t/t6023-merge-file.sh |    5 +++++
 2 files changed, 10 insertions(+), 1 deletions(-)
diff --git a/builtin-merge-file.c b/builtin-merge-file.c
index 9135773..10ec63b 100644
--- a/builtin-merge-file.c
+++ b/builtin-merge-file.c
@@ -36,9 +36,13 @@ int cmd_merge_file(int argc, char **argv, char **envp)
 	for (; i < 3; i++)
 		names[i] = argv[i + 1];
 
-	for (i = 0; i < 3; i++)
+	for (i = 0; i < 3; i++) {
 		if (read_mmfile(mmfs + i, argv[i + 1]))
 			return -1;
+		if (buffer_is_binary(mmfs[i].ptr, mmfs[i].size))
+			return error("Cannot merge binary files: %s\n",
+					argv[i + 1]);
+	}
 
 	ret = xdl_merge(mmfs + 1, mmfs + 0, names[0], mmfs + 2, names[2],
 			&xpp, XDL_MERGE_ZEALOUS, &result);
diff --git a/t/t6023-merge-file.sh b/t/t6023-merge-file.sh
index c76fccf..1decbfb 100755
--- a/t/t6023-merge-file.sh
+++ b/t/t6023-merge-file.sh
@@ -134,5 +134,10 @@ EOF
 
 test_expect_success "expected conflict markers" "git diff expect out"
 
+test_expect_success 'binary files cannot be merged' '
+	! git merge-file -p orig.txt ../test4012.png new1.txt 2> merge.err &&
+	grep "Cannot merge binary files" merge.err
+'
+
 test_done
 
-- 
1.5.2.1.2626.ge1044-dirty
Next: Linus Torvalds
Message 1 of 5 in “git-merge-file: refuse to merge binary files”
  1. 3/3 git-merge-file: refuse to merge binary filesJohannes Schindelin, Jun 5, 2007
  2. Linus TorvaldsJun 5, 2007
  3. Johannes SchindelinJun 5, 2007
  4. Junio C HamanoJun 5, 2007
  5. Junio C HamanoJun 5, 2007

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.