On Thu, Oct 31, 2013 at 1:29 PM, Max Horn <m...@quendi.de> wrote:
> Actually, I just noticed one thing that I *do* have a question about:
>
> On 31.10.2013, at 10:36, Felipe Contreras <felipe.contre...@gmail.com> wrote:
>
>> Signed-off-by: Felipe Contreras <felipe.contre...@gmail.com>
>> ---
>> builtin/fast-export.c  | 14 ++++++++++++++
>> t/t9350-fast-export.sh | 11 +++++++++++
>> 2 files changed, 25 insertions(+)
>>
>> diff --git a/builtin/fast-export.c b/builtin/fast-export.c
>> index b6f623e..8ed41b4 100644
>> --- a/builtin/fast-export.c
>> +++ b/builtin/fast-export.c
>> @@ -673,6 +673,19 @@ static void import_marks(char *input_file)
>>       fclose(f);
>> }
>>
>> +static void handle_deletes(void)
>> +{
>> +     int i;
>> +     for (i = 0; i < refspecs_nr; i++) {
>> +             struct refspec *refspec = &refspecs[i];
>> +             if (*refspec->src)
>> +                     continue;
>> +
>> +             printf("reset %s\nfrom %s\n\n",
>> +                             refspec->dst, sha1_to_hex(null_sha1));
>
> If I understand it right, this issues a "reset" command in the fast-import 
> stream, resetting a ref to an all-zero SHA1. I had a look at the 
> git-fast-import documentation, but I found that it does not explicitly cover 
> this case. In particular, the "reset" command does not specify that an 
> all-zero SHA1 should be treated as "delete this ref".

That's what the previous patch does.

> On the other hand, the docs for "reset" seem to indicate that one can omit 
> the "from" part, although I couldn't tell for sure what that would mean, 
> either.

It means something different.

> I have not yet tried to dive into the code to figure out what actually 
> happens, but I assume Felipe did that resp. tested it, and so supposedly 
> doing this works, at least for git resp. existing transport helpers. But I 
> wonder if other implementers of the fast-import format would handle it 
> properly?

Try this:

--- a/t/t9350-fast-export.sh
+++ b/t/t9350-fast-export.sh
@@ -519,7 +519,9 @@ test_expect_success 'delete refspec' '
        from 0000000000000000000000000000000000000000

        EOF
-       test_cmp expected actual
+       test_cmp expected actual &&
+       git fast-import < actual &&
+       test_must_fail git rev-parse -q --verify refs/heads/to-delete
 '

 test_done

-- 
Felipe Contreras
--
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