The type doesn't come from the parsing, the type also has to match the usage.
@ -15,7 +15,7 @@ struct commit *lookup_commit(unsigned char *sha1)
ret->object.type = commit_type;
return ret;
}
if (obj->parsed && obj->type != commit_type) {
if (obj->type != commit_type) {
error("Object %s is a %s, not a commit",
sha1_to_hex(sha1), obj->type);
return NULL;
@ -80,7 +80,7 @@ struct tree *lookup_tree(unsigned char *sha1)
ret->object.type = tree_type;
if (obj->parsed && obj->type != tree_type) {
if (obj->type != tree_type) {
error("Object %s is a %s, not a tree",