diffcore-break: do not break too small filepair.
authorJunio C Hamano <junkio@cox.net>
Tue, 13 Dec 2005 01:15:55 +0000 (17:15 -0800)
committerJunio C Hamano <junkio@cox.net>
Tue, 13 Dec 2005 01:15:55 +0000 (17:15 -0800)
Somehow we checked only one side and not the other.  By checking
the filesize upfront, we can bypass generating delta
unnecessarily.

Signed-off-by: Junio C Hamano <junkio@cox.net>
diffcore-break.c

index e6a468e6b0371f77e139928cb963b2b7974b9132..c57513a4fa83c58c5040ead38c52765051cd13f5 100644 (file)
@@ -62,6 +62,8 @@ static int should_break(struct diff_filespec *src,
                return 0; /* error but caught downstream */
 
        base_size = ((src->size < dst->size) ? src->size : dst->size);
+       if (base_size < MINIMUM_BREAK_SIZE)
+               return 0; /* we do not break too small filepair */
 
        delta = diff_delta(src->data, src->size,
                           dst->data, dst->size,
@@ -170,8 +172,7 @@ void diffcore_break(int break_score)
                    !S_ISDIR(p->one->mode) && !S_ISDIR(p->two->mode) &&
                    !strcmp(p->one->path, p->two->path)) {
                        if (should_break(p->one, p->two,
-                                        break_score, &score) &&
-                           MINIMUM_BREAK_SIZE <= p->one->size) {
+                                        break_score, &score)) {
                                /* Split this into delete and create */
                                struct diff_filespec *null_one, *null_two;
                                struct diff_filepair *dp;