Teach fsck-cache to accept non-commits for reachability analysis.

In particular, teach it about tags. Also, to make reachability actually
work for tags, we need to add the ref to the tagged object.
This commit is contained in:
Linus Torvalds 2005-05-04 17:03:09 -07:00
parent 552e2bd12e
commit 770896e548
2 changed files with 5 additions and 5 deletions

View file

@ -295,14 +295,12 @@ int main(int argc, char **argv)
continue;
if (!get_sha1(arg, head_sha1)) {
struct commit *commit = lookup_commit(head_sha1);
struct object *obj;
struct object *obj = lookup_object(head_sha1);
/* Error is printed by lookup_commit(). */
if (!commit)
/* Error is printed by lookup_object(). */
if (!obj)
continue;
obj = &commit->object;
obj->used = 1;
mark_reachable(obj, REACHABLE);
heads++;

2
tag.c
View file

@ -49,6 +49,8 @@ int parse_tag(struct tag *item)
goto err;
item->tagged = parse_object(object);
if (item->tagged)
add_ref(&item->object, item->tagged);
type_line = data + 48;
if (memcmp("\ntype ", type_line-1, 6))