repack: only unpack-unreachable if we are deleting redundant packs
The -A option calls pack-objects with the --unpack-unreachable option so that the unreachable objects in local packs are left in the local object store loose. But if the -d option to repack was _not_ used, then these unpacked loose objects are redundant and unnecessary. Update tests in t7701. Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
3289b9dec5
commit
83d0289df6
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user