Merge branch 'racy-dissociate'

This fixes a file-locking problem with `git clone --dissociate`.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
This commit is contained in:
Johannes Schindelin
2015-10-04 15:32:50 +02:00
2 changed files with 29 additions and 1 deletions

View File

@@ -1066,8 +1066,15 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
transport_unlock_pack(transport);
transport_disconnect(transport);
if (option_dissociate)
if (option_dissociate) {
struct packed_git *p;
for (p = packed_git; p; p = p->next) {
close_pack_windows(p);
close_pack_index(p);
}
dissociate_from_references();
}
junk_mode = JUNK_LEAVE_REPO;
err = checkout();

View File

@@ -188,5 +188,26 @@ test_expect_success 'clone and dissociate from reference' '
test_must_fail git -C R fsck &&
git -C S fsck
'
test_expect_success 'clone, dissociate from partial reference and repack' '
rm -fr P Q R &&
git init P &&
(
cd P &&
test_commit one &&
git repack &&
test_commit two &&
git repack
) &&
git clone --bare P Q &&
(
cd P &&
git checkout -b second &&
test_commit three &&
git repack
) &&
git clone --bare --dissociate --reference=P Q R &&
ls R/objects/pack/*.pack >packs.txt &&
test_line_count = 1 packs.txt
'
test_done