rerere: do not deal with symlinks.
authorJunio C Hamano <junkio@cox.net>
Sun, 25 Feb 2007 09:29:43 +0000 (01:29 -0800)
committerJunio C Hamano <junkio@cox.net>
Sun, 25 Feb 2007 09:29:43 +0000 (01:29 -0800)
Who would use multi-line symlinks that would benefit from rerere?
Just ignore them.

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

index ac0bf335a8c82fa4a6d1f83515a72c10a5b4d98c..58c5fed91d9d8f2f0fd573f5621344f795f1c11c 100644 (file)
@@ -154,11 +154,15 @@ static int find_conflict(struct path_list *conflict)
                return error("Could not read index");
        for (i = 0; i + 2 < active_nr; i++) {
                struct cache_entry *e1 = active_cache[i];
-               struct cache_entry *e2 = active_cache[i + 1];
-               struct cache_entry *e3 = active_cache[i + 2];
-               if (ce_stage(e1) == 1 && ce_stage(e2) == 2 &&
-                               ce_stage(e3) == 3 && ce_same_name(e1, e2) &&
-                               ce_same_name(e1, e3)) {
+               struct cache_entry *e2 = active_cache[i+1];
+               struct cache_entry *e3 = active_cache[i+2];
+               if (ce_stage(e1) == 1 &&
+                   ce_stage(e2) == 2 &&
+                   ce_stage(e3) == 3 &&
+                   ce_same_name(e1, e2) && ce_same_name(e1, e3) &&
+                   S_ISREG(ntohl(e1->ce_mode)) &&
+                   S_ISREG(ntohl(e2->ce_mode)) &&
+                   S_ISREG(ntohl(e3->ce_mode))) {
                        path_list_insert((const char *)e1->name, conflict);
                        i += 2;
                }