Merge branch 'rs/parse-tree-indirect'
Code cleanup. * rs/parse-tree-indirect: tree: simplify parse_tree_indirect()
This commit is contained in:
commit
430439536b
18
tree.c
18
tree.c
@ -244,19 +244,7 @@ void free_tree_buffer(struct tree *tree)
|
||||
|
||||
struct tree *parse_tree_indirect(const struct object_id *oid)
|
||||
{
|
||||
struct object *obj = parse_object(the_repository, oid);
|
||||
do {
|
||||
if (!obj)
|
||||
return NULL;
|
||||
if (obj->type == OBJ_TREE)
|
||||
return (struct tree *) obj;
|
||||
else if (obj->type == OBJ_COMMIT)
|
||||
obj = &(get_commit_tree(((struct commit *)obj))->object);
|
||||
else if (obj->type == OBJ_TAG)
|
||||
obj = ((struct tag *) obj)->tagged;
|
||||
else
|
||||
return NULL;
|
||||
if (!obj->parsed)
|
||||
parse_object(the_repository, &obj->oid);
|
||||
} while (1);
|
||||
struct repository *r = the_repository;
|
||||
struct object *obj = parse_object(r, oid);
|
||||
return (struct tree *)repo_peel_to_type(r, NULL, 0, obj, OBJ_TREE);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user