path: root/fsck-cache.c
diff options
authorJunio C Hamano <>2005-06-29 09:51:27 (GMT)
committerLinus Torvalds <>2005-06-29 16:11:39 (GMT)
commitf9253394a271a9fefdd234a86c228adeb6d0136a (patch)
treed01cae79c60a431d9747529bce855eb4d635e8d5 /fsck-cache.c
parent3c84974207fb6a98eaa393cd4c3481d8ecdb8ce2 (diff)
[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 <> Signed-off-by: Linus Torvalds <>
Diffstat (limited to 'fsck-cache.c')
1 files changed, 5 insertions, 0 deletions
diff --git a/fsck-cache.c b/fsck-cache.c
index eae73cc..4e19352 100644
--- a/fsck-cache.c
+++ b/fsck-cache.c
@@ -6,6 +6,7 @@
#include "tree.h"
#include "blob.h"
#include "tag.h"
+#include "pack.h"
#define REACHABLE 0x0001
@@ -437,6 +438,10 @@ int main(int argc, char **argv)
alt_odb[j].name[-1] = '/';
+ for (p = packed_git; p; p = p->next)
+ /* verify gives error messages itself */
+ verify_pack(p);
for (p = packed_git; p; p = p->next) {
int num = num_packed_objects(p);
for (i = 0; i < num; i++) {