From 94750e8af246b2adf7bd5766e7e0da5fcf928d24 Mon Sep 17 00:00:00 2001 From: Linquize Date: Fri, 29 Mar 2013 11:52:18 +0800 Subject: [PATCH] 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 --- src/diff_output.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/diff_output.c b/src/diff_output.c index e8dd5b317..d462142f9 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; }