Commit f4e3dae75ff7246952f6707ad2a2fdea758e03ea

Edward Thomson 2016-09-02T11:26:16

diff_print: change test for skipping binary printing Instead of skipping printing a binary diff when there is no data, skip printing when we have a status of `UNMODIFIED`. This is more in-line with our internal data model and allows us to expand the notion of binary data. In the future, there may have no data because the files were unmodified (there was no data to produce) or it may have no data because there was no data given to us in a patch. We want to treat these cases separately.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
diff --git a/src/diff_print.c b/src/diff_print.c
index f72ca89..264bd19 100644
--- a/src/diff_print.c
+++ b/src/diff_print.c
@@ -521,13 +521,13 @@ static int diff_print_patch_file_binary(
 	size_t pre_binary_size;
 	int error;
 
+	if (delta->status == GIT_DELTA_UNMODIFIED)
+		return 0;
+
 	if ((pi->flags & GIT_DIFF_SHOW_BINARY) == 0)
 		return diff_print_patch_file_binary_noshow(
 			pi, delta, old_pfx, new_pfx);
 
-	if (binary->new_file.datalen == 0 && binary->old_file.datalen == 0)
-		return 0;
-
 	pre_binary_size = pi->buf->size;
 	git_buf_printf(pi->buf, "GIT binary patch\n");
 	pi->line.num_lines++;