diff options
author | Junio C Hamano <junkio@cox.net> | 2006-04-25 16:37:08 -0700 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2006-04-25 16:37:08 -0700 |
commit | 53dc3f3e8069283924fcb7f1d538e2d1b03ec3bb (patch) | |
tree | b6d6e597852cbe1fb55e0db9389dfbd70dfb5267 /fsck-objects.c | |
parent | bad68ec92410cf47dd001aa9b95d0f24c5f4bf77 (diff) | |
download | git-53dc3f3e8069283924fcb7f1d538e2d1b03ec3bb.tar.gz git-53dc3f3e8069283924fcb7f1d538e2d1b03ec3bb.tar.xz |
Teach fsck-objects about cache-tree.
Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'fsck-objects.c')
-rw-r--r-- | fsck-objects.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/fsck-objects.c b/fsck-objects.c index 59b25904c..cc09143a9 100644 --- a/fsck-objects.c +++ b/fsck-objects.c @@ -8,6 +8,7 @@ #include "tag.h" #include "refs.h" #include "pack.h" +#include "cache-tree.h" #define REACHABLE 0x0001 @@ -438,6 +439,21 @@ static int fsck_head_link(void) return 0; } +static int fsck_cache_tree(struct cache_tree *it) +{ + int i; + int err = 0; + + if (0 <= it->entry_count) { + struct object *obj = parse_object(it->sha1); + if (obj->type != tree_type) + err |= objerror(obj, "non-tree in cache-tree"); + } + for (i = 0; i < it->subtree_nr; i++) + err |= fsck_cache_tree(it->down[i]->cache_tree); + return err; +} + int main(int argc, char **argv) { int i, heads; @@ -547,6 +563,8 @@ int main(int argc, char **argv) obj->used = 1; mark_reachable(obj, REACHABLE); } + if (active_cache_tree) + fsck_cache_tree(active_cache_tree); } check_connectivity(); |