git/list[1] front-page[2] threads[3] people[4] search[5] about
 

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

From
John Koleszar <jkoleszar@google.com>
Date
Apr 5, 2013, 01:22 UTC
Message-ID
<CAAvHm8NyJ3nRZPygy+grMw5BLhLe8eWfEBNfK1tkC8Y34jRynA@mail.gmail.com>
In-Reply-To
<7v6202jjhx.fsf@alter.siamese.dyndns.org>
On Thu, Apr 4, 2013 at 10:25 AM, Junio C Hamano <gitster@pobox.com> wrote:
Show 21 quoted lines
> John Koleszar <jkoleszar@google.com> 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.

Previous: Junio C HamanoNext: Josh Triplett
Message 14 of 26 in “http-backend: respect GIT_NAMESPACE with dumb clients”
  1. http-backend: respect GIT_NAMESPACE with dumb clientsJohn Koleszar, Mar 28, 2013
  2. Junio C HamanoMar 28, 2013
  3. Josh TriplettMar 28, 2013
  4. Junio C HamanoMar 28, 2013
  5. John KoleszarMar 28, 2013
  6. Junio C HamanoMar 28, 2013
  7. http-backend: respect GIT_NAMESPACE with dumb clientsJohn Koleszar, Apr 3, 2013
  8. Jeff KingApr 3, 2013
  9. Jeff KingApr 3, 2013
  10. Junio C HamanoApr 3, 2013
  11. John KoleszarApr 4, 2013
  12. http-backend: respect GIT_NAMESPACE with dumb clientsJohn Koleszar, Apr 4, 2013
  13. Junio C HamanoApr 4, 2013
  14. John KoleszarApr 5, 2013
  15. Josh TriplettApr 5, 2013
  16. Jeff KingApr 5, 2013
  17. Junio C HamanoApr 5, 2013
  18. Jeff KingApr 5, 2013
  19. John KoleszarApr 6, 2013
  20. http-backend: respect GIT_NAMESPACE with dumb clientsJohn Koleszar, Apr 10, 2013
  21. Junio C HamanoApr 10, 2013
  22. Jeff KingApr 10, 2013
  23. Thomas RastApr 8, 2013
  24. Jeff KingApr 8, 2013
  25. John KoleszarApr 9, 2013
  26. Junio C HamanoApr 3, 2013

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.