Skip to content

Commit 8895cbc

Browse files
author
Junio C Hamano
committed
Merge branch 'pm/diff'
* pm/diff: diff-index --cc shows a 3-way diff between HEAD, index and working tree.
2 parents 0ea2582 + cb2b9f5 commit 8895cbc

File tree

1 file changed

+25
-0
lines changed

1 file changed

+25
-0
lines changed

diff-lib.c

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,31 @@ static int show_modified(struct rev_info *revs,
213213
return -1;
214214
}
215215

216+
if (revs->combine_merges && !cached &&
217+
(hashcmp(sha1, old->sha1) || hashcmp(old->sha1, new->sha1))) {
218+
struct combine_diff_path *p;
219+
int pathlen = ce_namelen(new);
220+
221+
p = xmalloc(combine_diff_path_size(2, pathlen));
222+
p->path = (char *) &p->parent[2];
223+
p->next = NULL;
224+
p->len = pathlen;
225+
memcpy(p->path, new->name, pathlen);
226+
p->path[pathlen] = 0;
227+
p->mode = ntohl(mode);
228+
hashclr(p->sha1);
229+
memset(p->parent, 0, 2 * sizeof(struct combine_diff_parent));
230+
p->parent[0].status = DIFF_STATUS_MODIFIED;
231+
p->parent[0].mode = ntohl(new->ce_mode);
232+
hashcpy(p->parent[0].sha1, new->sha1);
233+
p->parent[1].status = DIFF_STATUS_MODIFIED;
234+
p->parent[1].mode = ntohl(old->ce_mode);
235+
hashcpy(p->parent[1].sha1, old->sha1);
236+
show_combined_diff(p, 2, revs->dense_combined_merges, revs);
237+
free(p);
238+
return 0;
239+
}
240+
216241
oldmode = old->ce_mode;
217242
if (mode == oldmode && !hashcmp(sha1, old->sha1) &&
218243
!revs->diffopt.find_copies_harder)

0 commit comments

Comments
 (0)