diff options
author | Junio C Hamano <junkio@cox.net> | 2006-04-23 20:20:25 -0700 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2006-04-24 00:26:31 -0700 |
commit | 17448209f5441718c69642871c85a80f00d12b43 (patch) | |
tree | 0e9e0d8a1718e3336c9a6d6b977b834b7cff355a /dump-cache-tree.c | |
parent | a6e5642f39db2113785c4f22add7e16d559b8d55 (diff) | |
download | git-17448209f5441718c69642871c85a80f00d12b43.tar.gz |
Add test-dump-cache-tree
This was useful in diagnosing the corrupt index.aux format
problem. But do not bother building or installing it by
default.
Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'dump-cache-tree.c')
-rw-r--r-- | dump-cache-tree.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/dump-cache-tree.c b/dump-cache-tree.c new file mode 100644 index 0000000000..80f8683f39 --- /dev/null +++ b/dump-cache-tree.c @@ -0,0 +1,32 @@ +#include "cache.h" +#include "tree.h" +#include "cache-tree.h" + +static unsigned char active_cache_sha1[20]; +static struct cache_tree *active_cache_tree; + +static void dump_cache_tree(struct cache_tree *it, const char *pfx) +{ + int i; + if (it->entry_count < 0) + printf("%-40s %s\n", "invalid", pfx); + else + printf("%s %s (%d entries)\n", + sha1_to_hex(it->sha1), + pfx, it->entry_count); + for (i = 0; i < it->subtree_nr; i++) { + char path[PATH_MAX]; + struct cache_tree_sub *down = it->down[i]; + sprintf(path, "%s%.*s/", pfx, down->namelen, down->name); + dump_cache_tree(down->cache_tree, path); + } +} + +int main(int ac, char **av) +{ + if (read_cache_1(active_cache_sha1) < 0) + die("unable to read index file"); + active_cache_tree = read_cache_tree(active_cache_sha1); + dump_cache_tree(active_cache_tree, ""); + return 0; +} |