summaryrefslogtreecommitdiff
path: root/t
diff options
context:
space:
mode:
authorBrandon Casey <drafnel@gmail.com>2008-11-12 17:59:02 (GMT)
committerJunio C Hamano <gitster@pobox.com>2008-11-12 18:28:06 (GMT)
commit9245ddd515d0fb5da52da4fd4dfc71460e98db90 (patch)
tree980fe4f4b3f714e4d91b4f74d6f855c0b1059a0f /t
parent9db56f71b91153f4076a796c80c61f00edd8b700 (diff)
downloadgit-9245ddd515d0fb5da52da4fd4dfc71460e98db90.zip
git-9245ddd515d0fb5da52da4fd4dfc71460e98db90.tar.gz
git-9245ddd515d0fb5da52da4fd4dfc71460e98db90.tar.bz2
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>
Diffstat (limited to 't')
-rwxr-xr-xt/t7700-repack.sh38
1 files changed, 38 insertions, 0 deletions
diff --git a/t/t7700-repack.sh b/t/t7700-repack.sh
new file mode 100755
index 0000000..7aaff0b
--- /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
+