Max Kirillov <m...@max630.net> 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 majord...@vger.kernel.org
>> 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 majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to