git/verify-pack.c
Junio C Hamano f9253394a2 [PATCH] Add git-verify-pack command.
Given a list of <pack>.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 <junkio@cox.net>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-06-29 09:11:39 -07:00

27 lines
407 B
C

#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;
}