Merge branch 'bc/maint-keep-pack'

* bc/maint-keep-pack:
  repack: only unpack-unreachable if we are deleting redundant packs
This commit is contained in:
Junio C Hamano 2008-11-16 00:49:02 -08:00
commit c9d8563c81
3 changed files with 22 additions and 10 deletions

View file

@ -38,12 +38,11 @@ OPTIONS
dangling. dangling.
-A:: -A::
Same as `-a`, but any unreachable objects in a previous Same as `-a`, unless '-d' is used. Then any unreachable
pack become loose, unpacked objects, instead of being objects in a previous pack become loose, unpacked objects,
left in the old pack. Unreachable objects are never instead of being left in the old pack. Unreachable objects
intentionally added to a pack, even when repacking. are never intentionally added to a pack, even when repacking.
When used with '-d', this option This option prevents unreachable objects from being immediately
prevents unreachable objects from being immediately
deleted by way of being left in the old pack and then deleted by way of being left in the old pack and then
removed. Instead, the loose unreachable objects removed. Instead, the loose unreachable objects
will be pruned according to normal expiry rules will be pruned according to normal expiry rules

View file

@ -71,7 +71,8 @@ case ",$all_into_one," in
existing="$existing $e" existing="$existing $e"
fi fi
done done
if test -n "$args" -a -n "$unpack_unreachable" if test -n "$args" -a -n "$unpack_unreachable" -a \
-n "$remove_redundant"
then then
args="$args $unpack_unreachable" args="$args $unpack_unreachable"
fi fi

View file

@ -8,7 +8,7 @@ fsha1=
csha1= csha1=
tsha1= tsha1=
test_expect_success '-A option leaves unreachable objects unpacked' ' test_expect_success '-A with -d option leaves unreachable objects unpacked' '
echo content > file1 && echo content > file1 &&
git add . && git add . &&
git commit -m initial_commit && git commit -m initial_commit &&
@ -58,7 +58,7 @@ compare_mtimes ()
' -- "$@" ' -- "$@"
} }
test_expect_success 'unpacked objects receive timestamp of pack file' ' test_expect_success '-A without -d option leaves unreachable objects packed' '
fsha1path=$(echo "$fsha1" | sed -e "s|\(..\)|\1/|") && fsha1path=$(echo "$fsha1" | sed -e "s|\(..\)|\1/|") &&
fsha1path=".git/objects/$fsha1path" && fsha1path=".git/objects/$fsha1path" &&
csha1path=$(echo "$csha1" | sed -e "s|\(..\)|\1/|") && csha1path=$(echo "$csha1" | sed -e "s|\(..\)|\1/|") &&
@ -75,7 +75,19 @@ test_expect_success 'unpacked objects receive timestamp of pack file' '
git branch -D transient_branch && git branch -D transient_branch &&
sleep 1 && sleep 1 &&
git repack -A -l && git repack -A -l &&
compare_mtimes "$packfile" "$fsha1path" "$csha1path" "$tsha1path" test ! -f "$fsha1path" &&
test ! -f "$csha1path" &&
test ! -f "$tsha1path" &&
git show $fsha1 &&
git show $csha1 &&
git show $tsha1
'
test_expect_success 'unpacked objects receive timestamp of pack file' '
tmppack=".git/objects/pack/tmp_pack" &&
ln "$packfile" "$tmppack" &&
git repack -A -l -d &&
compare_mtimes "$tmppack" "$fsha1path" "$csha1path" "$tsha1path"
' '
test_done test_done