From 9fdade06739af0b3e27422a973ae4fd83e3c918e Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 25 May 2005 16:00:04 -0700 Subject: [PATCH] Mode only changes from diff. This fixes another bug. - Mode-only changes were pruned incorrectly from the output. - Added test to catch the above problem. - Normalize rename/copy similarity score in the diff-raw output to per-cent, no matter what scale we internally use. Signed-off-by: Junio C Hamano Signed-off-by: Linus Torvalds --- diff.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'diff.c') diff --git a/diff.c b/diff.c index 8e3f495411..dd4b4fffe2 100644 --- a/diff.c +++ b/diff.c @@ -517,7 +517,8 @@ static void diff_flush_raw(struct diff_filepair *p, switch (p->status) { case 'C': case 'R': two_paths = 1; - sprintf(status, "%c%1d", p->status, p->score); + sprintf(status, "%c%03d", p->status, + (int)(0.5 + p->score * 100.0/MAX_SCORE)); break; default: two_paths = 0; @@ -750,7 +751,8 @@ static void diff_resolve_rename_copy(void) if (!p->status) p->status = 'R'; } - else if (memcmp(p->one->sha1, p->two->sha1, 20)) + else if (memcmp(p->one->sha1, p->two->sha1, 20) || + p->one->mode != p->two->mode) p->status = 'M'; else /* this is a "no-change" entry */ -- cgit v1.2.3