summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@ppc970.osdl.org>2005-05-04 17:03:09 -0700
committerLinus Torvalds <torvalds@ppc970.osdl.org>2005-05-04 17:03:09 -0700
commit770896e548d0e68ab120507895e1e878c5ee347c (patch)
tree789eaf8c1ac87a1d7115b0a47d1300ba191cff1d
parent552e2bd12ee7b3a73345f64cf66b2ce67d9d98dd (diff)
downloadgit-770896e548d0e68ab120507895e1e878c5ee347c.tar.gz
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.
-rw-r--r--fsck-cache.c8
-rw-r--r--tag.c2
2 files changed, 5 insertions, 5 deletions
diff --git a/fsck-cache.c b/fsck-cache.c
index fb0d82f332..e328cec75d 100644
--- a/fsck-cache.c
+++ b/fsck-cache.c
@@ -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++;
diff --git a/tag.c b/tag.c
index 9eade750d3..3a71dd416a 100644
--- a/tag.c
+++ b/tag.c
@@ -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))