diff options
author | Brandon Casey <drafnel@gmail.com> | 2008-11-12 11:59:02 -0600 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2008-11-12 10:28:06 -0800 |
commit | 9245ddd515d0fb5da52da4fd4dfc71460e98db90 (patch) | |
tree | 980fe4f4b3f714e4d91b4f74d6f855c0b1059a0f | |
parent | 9db56f71b91153f4076a796c80c61f00edd8b700 (diff) | |
download | git-9245ddd515d0fb5da52da4fd4dfc71460e98db90.tar.gz git-9245ddd515d0fb5da52da4fd4dfc71460e98db90.tar.xz |
t7700: demonstrate mishandling of objects in packs with a .keep file
Objects residing in pack files that have an associated .keep file are not
supposed to be repacked into new pack files, but they are.
Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rwxr-xr-x | t/t7700-repack.sh | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/t/t7700-repack.sh b/t/t7700-repack.sh new file mode 100755 index 000000000..7aaff0bbe --- /dev/null +++ b/t/t7700-repack.sh @@ -0,0 +1,38 @@ +#!/bin/sh + +test_description='git repack works correctly' + +. ./test-lib.sh + +test_expect_failure 'objects in packs marked .keep are not repacked' ' + echo content1 > file1 && + echo content2 > file2 && + git add . && + git commit -m initial_commit && + # Create two packs + # The first pack will contain all of the objects except one + git rev-list --objects --all | grep -v file2 | + git pack-objects pack > /dev/null && + # The second pack will contain the excluded object + packsha1=$(git rev-list --objects --all | grep file2 | + git pack-objects pack) && + touch -r pack-$packsha1.pack pack-$packsha1.keep && + objsha1=$(git verify-pack -v pack-$packsha1.idx | head -n 1 | + sed -e "s/^\([0-9a-f]\{40\}\).*/\1/") && + mv pack-* .git/objects/pack/ && + git repack -A -d -l && + git prune-packed && + for p in .git/objects/pack/*.idx; do + idx=$(basename $p) + test "pack-$packsha1.idx" = "$idx" && continue + if git verify-pack -v $p | egrep "^$objsha1"; then + found_duplicate_object=1 + echo "DUPLICATE OBJECT FOUND" + break + fi + done && + test -z "$found_duplicate_object" +' + +test_done + |