|
|
|
@ -213,6 +213,31 @@ static int show_modified(struct rev_info *revs,
@@ -213,6 +213,31 @@ static int show_modified(struct rev_info *revs,
|
|
|
|
|
return -1; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (revs->combine_merges && !cached && |
|
|
|
|
(hashcmp(sha1, old->sha1) || hashcmp(old->sha1, new->sha1))) { |
|
|
|
|
struct combine_diff_path *p; |
|
|
|
|
int pathlen = ce_namelen(new); |
|
|
|
|
|
|
|
|
|
p = xmalloc(combine_diff_path_size(2, pathlen)); |
|
|
|
|
p->path = (char *) &p->parent[2]; |
|
|
|
|
p->next = NULL; |
|
|
|
|
p->len = pathlen; |
|
|
|
|
memcpy(p->path, new->name, pathlen); |
|
|
|
|
p->path[pathlen] = 0; |
|
|
|
|
p->mode = ntohl(mode); |
|
|
|
|
hashclr(p->sha1); |
|
|
|
|
memset(p->parent, 0, 2 * sizeof(struct combine_diff_parent)); |
|
|
|
|
p->parent[0].status = DIFF_STATUS_MODIFIED; |
|
|
|
|
p->parent[0].mode = ntohl(new->ce_mode); |
|
|
|
|
hashcpy(p->parent[0].sha1, new->sha1); |
|
|
|
|
p->parent[1].status = DIFF_STATUS_MODIFIED; |
|
|
|
|
p->parent[1].mode = ntohl(old->ce_mode); |
|
|
|
|
hashcpy(p->parent[1].sha1, old->sha1); |
|
|
|
|
show_combined_diff(p, 2, revs->dense_combined_merges, revs); |
|
|
|
|
free(p); |
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
oldmode = old->ce_mode; |
|
|
|
|
if (mode == oldmode && !hashcmp(sha1, old->sha1) && |
|
|
|
|
!revs->diffopt.find_copies_harder) |
|
|
|
|