Code

Merge branch 'maint'
authorShawn O. Pearce <spearce@spearce.org>
Mon, 5 Mar 2007 17:49:02 +0000 (12:49 -0500)
committerShawn O. Pearce <spearce@spearce.org>
Mon, 5 Mar 2007 17:50:29 +0000 (12:50 -0500)
* maint:
  fast-import: Fail if a non-existant commit is used for merge
  fast-import: Avoid infinite loop after reset

[sp: Minor evil merge to deal with type_names array moving
 to be private in 'master'.]

1  2 
fast-import.c

diff --cc fast-import.c
index 65e99c2e8b14840f70c027deb360d5d3c5292959,d9492b9884fbf78a5986f7701c79136c6f83798f..cc3347b23d0c7dba1bc05c65cb58215c92bb8547
@@@ -1746,7 -1752,14 +1752,14 @@@ static struct hash_list *cmd_merge(unsi
                        if (oe->type != OBJ_COMMIT)
                                die("Mark :%" PRIuMAX " not a commit", idnum);
                        hashcpy(n->sha1, oe->sha1);
-               } else if (get_sha1(from, n->sha1))
+               } else if (!get_sha1(from, n->sha1)) {
+                       unsigned long size;
+                       char *buf = read_object_with_reference(n->sha1,
 -                              type_names[OBJ_COMMIT], &size, n->sha1);
++                              commit_type, &size, n->sha1);
+                       if (!buf || size < 46)
+                               die("Not a valid commit: %s", from);
+                       free(buf);
+               } else
                        die("Invalid ref name or SHA1 expression: %s", from);
  
                n->next = NULL;