From f9253394a271a9fefdd234a86c228adeb6d0136a Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 29 Jun 2005 02:51:27 -0700 Subject: [PATCH] Add git-verify-pack command. Given a list of .idx files, this command validates the index file and the corresponding .pack file for consistency. This patch also uses the same validation mechanism in fsck-cache when the --full flag is used. During normal operation, sha1_file.c verifies that a given .idx file matches the .pack file by comparing the SHA1 checksum stored in .idx file and .pack file as a minimum sanity check. We may further want to check the pack signature and version when we map the pack, but that would be a separate patch. Earlier, errors to map a pack file was not flagged fatal but led to a random fatal error later. This version explicitly die()s when such an error is detected. Signed-off-by: Junio C Hamano Signed-off-by: Linus Torvalds --- verify-pack.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 verify-pack.c (limited to 'verify-pack.c') diff --git a/verify-pack.c b/verify-pack.c new file mode 100644 index 0000000000..3ae5ac1b4f --- /dev/null +++ b/verify-pack.c @@ -0,0 +1,26 @@ +#include "cache.h" +#include "pack.h" + +static int verify_one_pack(char *arg) +{ + struct packed_git *g = add_packed_git(arg, strlen(arg)); + if (!g) + return -1; + return verify_pack(g); +} + +int main(int ac, char **av) +{ + int errs = 0; + + while (1 < ac) { + char path[PATH_MAX]; + strcpy(path, av[1]); + if (verify_one_pack(path)) + errs++; + else + printf("%s: OK\n", av[1]); + ac--; av++; + } + return !!errs; +} -- cgit v1.2.1