Max Kirillov <max@xxxxxxxxxx> writes: >> + 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(); >> + } > > This does not seem to close handles to the pack files > themseves, does Windows still allow removing the files? I > probably did not tried that, because I started from handles, > and discovered mapped files only later. This is trying to (incompletely) mimic what free_pack_by_name() in sha1_file.c is doing but for all packs, I think. I wonder why we do not have to do other things here that are done over there, like clearing delta-base-cache, closing pack_fd and decrementing pack_open_fds, etc. The right approach may to have a helper in sha1_file.c that closes and cleans up _all_ packs, and call it from here, instead of having builtin/clone.c even know about implementation details such as packed_git is a linked list, etc. > >> junk_mode = JUNK_LEAVE_REPO; >> err = checkout(); >> diff --git a/t/t5700-clone-reference.sh b/t/t5700-clone-reference.sh >> index ef1779f..2250ef4 100755 >> --- a/t/t5700-clone-reference.sh >> +++ b/t/t5700-clone-reference.sh >> @@ -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 >> +' > > Unless it goes very lowlevel like running lsof of readin > proc testing this should always pass on Linux, even if the > issue is not fixed, maybe should be a conditional for > Windows only? > >> test_done >> -- >> 2.5.3.windows.1.3.gc322723 >> >> >> -- >> To unsubscribe from this list: send the line "unsubscribe git" in >> the body of a message to majordomo@xxxxxxxxxxxxxxx >> More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html