[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 <junkio@cox.net>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
Junio C Hamano
2005-05-25 16:00:04 -07:00
committed by Linus Torvalds
parent 96716a1976
commit 9fdade0673
3 changed files with 40 additions and 2 deletions

6
diff.c
View File

@ -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 */