X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=combine-diff.c;fp=combine-diff.c;h=d812600d1185aa82b3a0dae69f61daca789b9322;hb=713a11fceb662f275b5e1294acc6f38674834941;hp=a38f01b13ca6748ff7db613061a7715353832462;hpb=365463851303f74eb5e5be7101811f215602fcd9;p=git.git diff --git a/combine-diff.c b/combine-diff.c index a38f01b1..d812600d 100644 --- a/combine-diff.c +++ b/combine-diff.c @@ -630,9 +630,10 @@ static int show_patch_diff(struct combine_diff_path *elem, int num_parent, int i, show_hunks, shown_header = 0; char ourtmp_buf[TMPPATHLEN]; char *ourtmp = ourtmp_buf; + int working_tree_file = !memcmp(elem->sha1, null_sha1, 20); /* Read the result of merge first */ - if (memcmp(elem->sha1, null_sha1, 20)) { + if (!working_tree_file) { result = grab_blob(elem->sha1, &size); write_to_temp_file(ourtmp, result, size); } @@ -646,6 +647,7 @@ static int show_patch_diff(struct combine_diff_path *elem, int num_parent, int len = st.st_size; int cnt = 0; + elem->mode = DIFF_FILE_CANON_MODE(st.st_mode); size = len; result = xmalloc(len + 1); while (cnt < len) { @@ -661,6 +663,7 @@ static int show_patch_diff(struct combine_diff_path *elem, int num_parent, else { /* deleted file */ size = 0; + elem->mode = 0; result = xmalloc(1); result[0] = 0; ourtmp = "/dev/null"; @@ -716,7 +719,7 @@ static int show_patch_diff(struct combine_diff_path *elem, int num_parent, show_hunks = make_hunks(sline, cnt, num_parent, dense); - if (show_hunks || mode_differs) { + if (show_hunks || mode_differs || working_tree_file) { const char *abb; if (header) { @@ -731,8 +734,6 @@ static int show_patch_diff(struct combine_diff_path *elem, int num_parent, putchar('\n'); printf("index "); for (i = 0; i < num_parent; i++) { - if (elem->parent[i].mode != elem->mode) - mode_differs = 1; abb = find_unique_abbrev(elem->parent[i].sha1, DEFAULT_ABBREV); printf("%s%s", i ? "," : "", abb);