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

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

From
Jeff King <peff@peff.net>
Date
Apr 5, 2013, 05:43 UTC
Message-ID
<20130405054328.GA12705@sigill.intra.peff.net>
In-Reply-To
<7vobdtee12.fsf@alter.siamese.dyndns.org>
On Thu, Apr 04, 2013 at 10:34:49PM -0700, Junio C Hamano wrote:
Show 15 quoted lines
> > +static void get_head(char *arg)
> > +{
> > +	struct strbuf buf = STRBUF_INIT;
> > +	head_ref_namespaced(show_text_ref, &buf);
> > +	send_strbuf("text/plain", &buf);
> > +	strbuf_release(&buf);
> > +}
> 
> You identified the right place to patch, but I think we need a bit
> more than this.
> 
> The show_text_ref() function gives "SHA-1 <TAB> refname". It is
> likely that the dumb client will ignore the trailing part of that
> output, but let's avoid a hack that we would not want see other
> implementations imitate.

Oh, right. I was thinking too much about normal clients which see HEAD in the ref advertisement; of course the dumb client is expecting to see the actual HEAD file.

Show 16 quoted lines
> One advantage dumb clients has over smart ones is that they can read
> HEAD that is a textual symref from a dumb server and learn which
> branch is the default one (remote.c::guess_remote_head()) without
> guessing.  I think this function should:
> 
>  - Turn "HEAD" into a namespaced equivalent;
> 
>  - Run resolve_ref() on the result of the above;
> 
>  - Is it a symbolic ref?
> 
>    . If it is, then format "ref: <target>\n" into a strbuf and send
>      it (make sure <target> is without the namespace prefix);
> 
>    . Otherwise, HEAD is detached. Prepare "%s\n" % sha1_to_hex(sha1),
>      and send it.

Yes, that sounds right; it is basically just reconstructing a HEAD file. What do the HEADs inside namespaces look like? Do they refer to full global refs, or do they refer to refs within the namespace?

If the latter, we could just send the HEAD file directly. But I suspect it is the former, so that they can function when non-namespaced commands are used.

-Peff
Previous: Junio C HamanoNext: John Koleszar
Message 18 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.