Merge branch 'js/clone-dissociate'

"git clone --dissociate" runs a big "git repack" process at the
end, and it helps to close file descriptors that are open on the
packs and their idx files before doing so on filesystems that
cannot remove a file that is still open.

* js/clone-dissociate:
  clone --dissociate: avoid locking pack files
  sha1_file.c: add a function to release all packs
  sha1_file: consolidate code to close a pack's file descriptor
  t5700: demonstrate a Windows file locking issue with `git clone --dissociate`
This commit is contained in:
Junio C Hamano
2015-10-15 15:43:49 -07:00
4 changed files with 62 additions and 23 deletions

View File

@ -1071,8 +1071,10 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
transport_unlock_pack(transport);
transport_disconnect(transport);
if (option_dissociate)
if (option_dissociate) {
close_all_packs();
dissociate_from_references();
}
junk_mode = JUNK_LEAVE_REPO;
err = checkout();