read-tree: reorganize bind_merge code.
authorJunio C Hamano <junkio@cox.net>
Wed, 17 May 2006 10:16:27 +0000 (03:16 -0700)
committerJunio C Hamano <junkio@cox.net>
Wed, 17 May 2006 10:16:27 +0000 (03:16 -0700)
This does not change the logic but moves the order of checks
around so that merging of read-tree safety code would become
easier.

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

index 8b91aff..fb1d682 100644 (file)
@@ -683,7 +683,7 @@ static int twoway_merge(struct cache_entry **src)
  * Bind merge.
  *
  * Keep the index entries at stage0, collapse stage1 but make sure
- * stage0 does not have anything in prefix.
+ * stage0 does not have anything there.
  */
 static int bind_merge(struct cache_entry **src)
 {
@@ -693,12 +693,12 @@ static int bind_merge(struct cache_entry **src)
        if (merge_size != 1)
                return error("Cannot do a bind merge of %d trees\n",
                             merge_size);
-       if (!a)
-               return merged_entry(old, NULL);
-       if (old)
+       if (a && old)
                die("Entry '%s' overlaps.  Cannot bind.", a->name);
-
-       return merged_entry(a, NULL);
+       if (!a)
+               return keep_entry(old);
+       else
+               return merged_entry(a, NULL);
 }
 
 /*