-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'bc/maint-keep-pack' into maint
* bc/maint-keep-pack: repack: only unpack-unreachable if we are deleting redundant packs t7700: test that 'repack -a' packs alternate packed objects pack-objects: extend --local to mean ignore non-local loose objects too sha1_file.c: split has_loose_object() into local and non-local counterparts t7700: demonstrate mishandling of loose objects in an alternate ODB builtin-gc.c: use new pack_keep bitfield to detect .keep file existence repack: do not fall back to incremental repacking with [-a|-A] repack: don't repack local objects in packs with .keep file pack-objects: new option --honor-pack-keep packed_git: convert pack_local flag into a bitfield and add pack_keep t7700: demonstrate mishandling of objects in packs with a .keep file
- Loading branch information
Showing
9 changed files
with
137 additions
and
36 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
#!/bin/sh | ||
|
||
test_description='git repack works correctly' | ||
|
||
. ./test-lib.sh | ||
|
||
test_expect_success '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_expect_success 'loose objects in alternate ODB are not repacked' ' | ||
mkdir alt_objects && | ||
echo `pwd`/alt_objects > .git/objects/info/alternates && | ||
echo content3 > file3 && | ||
objsha1=$(GIT_OBJECT_DIRECTORY=alt_objects git hash-object -w file3) && | ||
git add file3 && | ||
git commit -m commit_file3 && | ||
git repack -a -d -l && | ||
git prune-packed && | ||
for p in .git/objects/pack/*.idx; do | ||
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_expect_success 'packed obs in alt ODB are repacked even when local repo is packless' ' | ||
mkdir alt_objects/pack | ||
mv .git/objects/pack/* alt_objects/pack && | ||
git repack -a && | ||
myidx=$(ls -1 .git/objects/pack/*.idx) && | ||
test -f "$myidx" && | ||
for p in alt_objects/pack/*.idx; do | ||
git verify-pack -v $p | sed -n -e "/^[0-9a-f]\{40\}/p" | ||
done | while read sha1 rest; do | ||
if ! ( git verify-pack -v $myidx | grep "^$sha1" ); then | ||
echo "Missing object in local pack: $sha1" | ||
return 1 | ||
fi | ||
done | ||
' | ||
|
||
test_done | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters