diff options
author | Junio C Hamano <junkio@cox.net> | 2005-06-19 13:17:50 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-06-19 20:13:18 -0700 |
commit | 366175ef8c3b1e145f4ba846e63a1dea3ec3cacc (patch) | |
tree | bb4a2e04362c038ee2f8d6b77e5bdb9f4223dfea /diffcore-break.c | |
parent | 232b75ab3d60475b19270be022a966772c25c84b (diff) | |
download | git-366175ef8c3b1e145f4ba846e63a1dea3ec3cacc.tar.gz git-366175ef8c3b1e145f4ba846e63a1dea3ec3cacc.tar.xz |
[PATCH] Rework -B output.
Patch for a completely rewritten file detected by the -B flag
was shown as a pair of creation followed by deletion in earlier
versions. This was an misguided attempt to make reviewing such
a complete rewrite easier, and unnecessarily ended up confusing
git-apply. Instead, show the entire contents of old version
prefixed with '-', followed by the entire contents of new
version prefixed with '+'. This gives the same easy-to-review
for human consumer while keeping it a single, regular
modification patch for machine consumption, something that even
GNU patch can grok.
Signed-off-by: Junio C Hamano <junkio@cox.net>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'diffcore-break.c')
-rw-r--r-- | diffcore-break.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/diffcore-break.c b/diffcore-break.c index 082e4e596..920062bfd 100644 --- a/diffcore-break.c +++ b/diffcore-break.c @@ -214,7 +214,7 @@ static void merge_broken(struct diff_filepair *p, struct diff_queue_struct *outq) { /* p and pp are broken pairs we want to merge */ - struct diff_filepair *c = p, *d = pp; + struct diff_filepair *c = p, *d = pp, *dp; if (DIFF_FILE_VALID(p->one)) { /* this must be a delete half */ d = p; c = pp; @@ -229,7 +229,8 @@ static void merge_broken(struct diff_filepair *p, if (!DIFF_FILE_VALID(c->two)) die("internal error in merge #4"); - diff_queue(outq, d->one, c->two); + dp = diff_queue(outq, d->one, c->two); + dp->score = p->score; diff_free_filespec_data(d->two); diff_free_filespec_data(c->one); free(d); @@ -251,7 +252,6 @@ void diffcore_merge_broken(void) /* we already merged this with its peer */ continue; else if (p->broken_pair && - p->score == 0 && !strcmp(p->one->path, p->two->path)) { /* If the peer also survived rename/copy, then * we merge them back together. @@ -259,7 +259,6 @@ void diffcore_merge_broken(void) for (j = i + 1; j < q->nr; j++) { struct diff_filepair *pp = q->queue[j]; if (pp->broken_pair && - p->score == 0 && !strcmp(pp->one->path, pp->two->path) && !strcmp(p->one->path, pp->two->path)) { /* Peer survived. Merge them */ |