Commit 94750e8af246b2adf7bd5766e7e0da5fcf928d24

Linquize 2013-03-29T11:52:18

Fix submodule dirty states not showing if submodules comes before files, or there are only dirty submodules but no changed files GIT_DIFF_PATCH_DIFFABLE was not set, so the diff content was not shown When submodule is dirty, the hash may be the same, but the length is different because -dirty is appended We can therefore compare the length or hash

1
2
3
4
5
6
7
8
9
10
11
12
13
14
diff --git a/src/diff_output.c b/src/diff_output.c
index e8dd5b3..d462142 100644
--- a/src/diff_output.c
+++ b/src/diff_output.c
@@ -678,7 +678,8 @@ cleanup:
 		if ((delta->flags & GIT_DIFF_FLAG_BINARY) == 0 &&
 			delta->status != GIT_DELTA_UNMODIFIED &&
 			(patch->old_data.len || patch->new_data.len) &&
-			!git_oid_equal(&delta->old_file.oid, &delta->new_file.oid))
+			((patch->old_data.len != patch->new_data.len) ||
+				!git_oid_equal(&delta->old_file.oid, &delta->new_file.oid)))
 			patch->flags |= GIT_DIFF_PATCH_DIFFABLE;
 	}