Browse Source

Merge branch 'pm/diff'

* pm/diff:
  diff-index --cc shows a 3-way diff between HEAD, index and working tree.
maint
Junio C Hamano 19 years ago
parent
commit
8895cbcda1
  1. 25
      diff-lib.c

25
diff-lib.c

@ -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)

Loading…
Cancel
Save