t5303: Do not overwrite an existing pack

This test corrupts a pack file, then repacks the objects. The consequence
is that the repacked pack file has the same name as the original file
(that has been corrupted).

During its operation, git-pack-objects opens the corrupted file and keeps
it open at all times. On Windows, this is a problem because a file that is
open in any process cannot be delete or replaced, but that is what we do
in some of the test cases, and so they fail.

The work-around is to write the repacked objects to a file of a different
name, and replace the original after git-pack-objects has terminated.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
This commit is contained in:
Johannes Sixt
2008-11-17 09:25:19 +01:00
parent 639583be98
commit 8054a9ec60

View File

@@ -43,8 +43,11 @@ create_new_pack() {
do_repack() {
pack=`printf "$blob_1\n$blob_2\n$blob_3\n" |
git pack-objects $@ .git/objects/pack/pack` &&
pack=".git/objects/pack/pack-${pack}"
git pack-objects $@ .git/objects/pack/packtmp` &&
packtmp=".git/objects/pack/packtmp-${pack}" &&
pack=".git/objects/pack/pack-${pack}" &&
mv "${packtmp}.pack" "${pack}.pack" &&
mv "${packtmp}.idx" "${pack}.idx"
}
do_corrupt_object() {