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

Re: [RFC 2/2] Add Git-aware CGI for Git-aware smart HTTP transport

From
RDRogan Dawes <lists@dawes.za.net>
Date
Aug 4, 2008, 16:18 UTC
Message-ID
<48972BEC.1060105@dawes.za.net>
In-Reply-To
<20080804155956.GF27666@spearce.org>
Shawn O. Pearce wrote:
Show 20 quoted lines
> Rogan Dawes <lists@dawes.za.net> wrote:
>> Shawn O. Pearce wrote:
>>> Currently git-http-backend requests no caching for info/refs [...]
>> Fair enough, but what about the quote from RFC2616 that I posted in  
>> rebuttal to Dscho?
>>
>>> 13.10 Invalidation After Updates or Deletions
>>>
>>> ...
>>>
>>> Some HTTP methods MUST cause a cache to invalidate an entity. This is
>>> either the entity referred to by the Request-URI, or by the Location
>>> or Content-Location headers (if present). These methods are:
>>>
>>>       - PUT
>>>       - DELETE
>>>       - POST
>> This doesn't seem negotiable to me.
> 
> Its not negotiable.  POST requires no caching.  End of discussion.

Aha. So now I see the objective. I had misunderstood the intention to be to *allow* caching of POST'ed resources.

Show 11 quoted lines
>> For those resources that are expected to be cacheable, the request  
>> should be made using a GET.
> 
> That's exactly what we are doing.  Where caching is reasonable we are
> using a GET request.  Where caching cannot be performed as the server
> state is changing (e.g. actually updating refs) we are using POST.
> That is entirely within the guidelines of the RFC.
> 
> However we are "abusing" POST for "POST /info/refs" to detect a
> Git-aware HTTP server.  Sending POST to a static resource should
> always fail.

Right. Either with a "405 Method not supported", or a "404 Not found". as I discovered.

Show 15 quoted lines
>>> Because git-http-backend emulates a dumb server there is a command
>>> dispatch table based upon the URL submitted.  Thus we already have
>>> the command dispatch behavior implemented in the URL and doing it
>>> in the POST body would only complicate the code further.
>> Not by a huge amount, surely?
>>
>> if (method == "GET") command = ...
>> else if (method == "POST") command = ...
>> dispatch(command);
> 
> Well, true, we could do that.  But then we have to break the
> command name out of the input stream.  In some cases we may just be
> exec'ing another Git process and letting it handle the input stream.
> Shoving the command name into the start of it just makes it that
> much harder to parse out.
Fair enough. I had not thought about other uses for the input stream.
Show 11 quoted lines
> One of the problems with these RPC-in-HTTP systems is always the
> fact that the true nature of the action isn't visible in the method
> and URL, causing servers and proxies to have to parse the stream to
> implement firewall rules.  Or to provide access control.  I'm trying
> to reuse as much of the access control support as possible from the
> HTTP server and put as little of it as possible into the backend CGI.
> 
> Since the backend CGI is based upon git-receive-pack itself admins
> can use the standard pre-receive/update hook pair to manage branch
> level security in a repository, while gross-level read/write can
> be done in the server.
Works for me!
Thanks for doing all the hard thinking for this feature :-)
Rogan
Previous: Shawn O. PearceNext: H. Peter Anvin
Message 33 of 40 in “More on git over HTTP POST”
  1. H. Peter AnvinAug 1, 2008
  2. Shawn O. PearceAug 2, 2008
  3. Daniel StenbergAug 2, 2008
  4. Shawn O. PearceAug 2, 2008
  5. Petr BaudisAug 2, 2008
  6. Shawn O. PearceAug 2, 2008
  7. Shawn O. PearceAug 3, 2008
  8. Junio C HamanoAug 3, 2008
  9. Shawn O. PearceAug 3, 2008
  10. H. Peter AnvinAug 3, 2008
  11. Shawn O. PearceAug 3, 2008
  12. david@lang.hmAug 3, 2008
  13. H. Peter AnvinAug 3, 2008
  14. H. Peter AnvinAug 3, 2008
  15. H. Peter AnvinAug 3, 2008
  16. Shawn O. PearceAug 3, 2008
  17. H. Peter AnvinAug 3, 2008
  18. H. Peter AnvinAug 3, 2008
  19. Mike HommeyAug 3, 2008
  20. 1/2 Add backdoor options to receive-pack for use in Git-aware CGIShawn O. Pearce, Aug 3, 2008
  21. 2/2 Add Git-aware CGI for Git-aware smart HTTP transportShawn O. Pearce, Aug 3, 2008
  22. H. Peter AnvinAug 3, 2008
  23. Shawn O. PearceAug 3, 2008
  24. Junio C HamanoAug 3, 2008
  25. Shawn O. PearceAug 4, 2008
  26. Rogan DawesAug 4, 2008
  27. Johannes SchindelinAug 4, 2008
  28. Rogan DawesAug 4, 2008
  29. Johannes SchindelinAug 4, 2008
  30. Shawn O. PearceAug 4, 2008
  31. Rogan DawesAug 4, 2008
  32. Shawn O. PearceAug 4, 2008
  33. Rogan DawesAug 4, 2008
  34. H. Peter AnvinAug 5, 2008
  35. Shawn O. PearceAug 5, 2008
  36. H. Peter AnvinAug 5, 2008
  37. Shawn O. PearceAug 5, 2008
  38. H. Peter AnvinAug 5, 2008
  39. Add Git-aware CGI for Git-aware smart HTTP transportH. Peter Anvin, Aug 13, 2008
  40. Shawn O. PearceAug 13, 2008

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.