Re: [PATCH] http-backend: respect GIT_NAMESPACE with dumb clients

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Apr 4, 2013 at 10:25 AM, Junio C Hamano <gitster@xxxxxxxxx> wrote:
> John Koleszar <jkoleszar@xxxxxxxxxx> writes:
>
>> @@ -402,7 +404,8 @@ static void get_info_refs(char *arg)
>>
>>       } else {
>>               select_getanyfile();
>> -             for_each_ref(show_text_ref, &buf);
>> +             head_ref_namespaced(show_text_ref, &buf);
>> +             for_each_namespaced_ref(show_text_ref, &buf);
>>               send_strbuf("text/plain", &buf);
>>       }
>
> Whether we are namespaced or not, we used to do for_each_ref() here,
> not advertising the HEAD (outside refs/ hierarchy), but we now do,
> and as the first element in the output.
>
> Am I reading the patch correctly?
>
> Is that an unrelated but useful bugfix even for people who do not
> use server namespaces?
>

Actually, I think this line may be buggy. Hold off submitting if you
haven't already.

Including the HEAD ref in the advertisement from /info/refs ends up
duplicating it, since the dumb client unconditionally fetches the file
/HEAD to use as the that ref. I think the right thing to do is
generate the correct /HEAD using head_ref_namespaced(), rather than
returning the bare file $GIT_DIR/HEAD, but I'm not 100% sure how HEAD
and namespaces interact, since I haven't been able to produce a repo
with a different HEAD in a namespace. Can you verify this approach?

$ GIT_SMART_HTTP=0 ./git ls-remote http://localhost:8080/  | grep HEAD
bd9cd9a1859aa464b3092f2023b3a4040166572d HEAD
bd9cd9a1859aa464b3092f2023b3a4040166572d HEAD

Generates these requests (ignore the errors):
2013/04/04 18:18:49 /info/refs
2013/04/04 18:18:49 http: invalid Content-Length of "3285\r\n" sent
2013/04/04 18:18:49 /HEAD
2013/04/04 18:18:49 http: invalid Content-Length of "41\r\n" sent

I didn't catch this before, since the smart protocol includes HEAD in
its response, and I was trying to make the two match.
--
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




[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]