diff options
author | Junio C Hamano <junkio@cox.net> | 2005-06-29 02:51:27 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-06-29 09:11:39 -0700 |
commit | f9253394a271a9fefdd234a86c228adeb6d0136a (patch) | |
tree | d01cae79c60a431d9747529bce855eb4d635e8d5 /t | |
parent | 3c84974207fb6a98eaa393cd4c3481d8ecdb8ce2 (diff) | |
download | git-f9253394a271a9fefdd234a86c228adeb6d0136a.tar.gz |
[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>
Diffstat (limited to 't')
-rwxr-xr-x | t/t5300-pack-object.sh | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/t/t5300-pack-object.sh b/t/t5300-pack-object.sh index 7a39f7e04a..d993120120 100755 --- a/t/t5300-pack-object.sh +++ b/t/t5300-pack-object.sh @@ -125,4 +125,42 @@ test_expect_success \ } >current && diff expect current' +unset GIT_OBJECT_DIRECTORY + +test_expect_success \ + 'verify pack' \ + 'git-verify-pack test-1.idx test-2.idx' + +test_expect_success \ + 'corrupt a pack and see if verify catches' \ + 'cp test-1.idx test-3.idx && + cp test-2.pack test-3.pack && + if git-verify-pack test-3.idx + then false + else :; + fi && + + cp test-1.pack test-3.pack && + dd if=/dev/zero of=test-3.pack count=1 bs=1 conv=notrunc seek=2 && + if git-verify-pack test-3.idx + then false + else :; + fi && + + cp test-1.pack test-3.pack && + dd if=/dev/zero of=test-3.pack count=1 bs=1 conv=notrunc seek=7 && + if git-verify-pack test-3.idx + then false + else :; + fi && + + cp test-1.pack test-3.pack && + dd if=/dev/zero of=test-3.pack count=1 bs=1 conv=notrunc seek=12 && + if git-verify-pack test-3.idx + then false + else :; + fi && + + :' + test_done |