[PATCH] Mode only changes from diff.
[gitweb.git] / diff.c
diff --git a/diff.c b/diff.c
index 8e3f49541115fda30fce630c781fe9f2fb54e484..dd4b4fffe28bca38660de895e91159575b59c9be 100644 (file)
--- 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 */