From 366175ef8c3b1e145f4ba846e63a1dea3ec3cacc Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Sun, 19 Jun 2005 13:17:50 -0700 Subject: [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 Signed-off-by: Linus Torvalds --- diffcore-break.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'diffcore-break.c') 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 */ -- cgit v1.2.1