Shawn O. Pearce wrote:
Rogan Dawes <lists@xxxxxxxxxxxx> wrote:
Shawn O. Pearce wrote:
Smart Server Detection
----------------------
To detect a smart (Git-aware) server a client sends an
empty POST request to info/refs; [...]
C: POST /repository.git/info/refs HTTP/1.0
C: Content-Length: 0
I don't understand why you would want to keep the commands in the URL
when you are doing a POST?
Well, as Dscho pointed out this partly has to do with caching and
the transparent dumb server functionality. By using the command in
the URL, and having the command match that of the dumb server file,
its easier to emulate a dumb server and also to permit caching.
Currently git-http-backend requests no caching for info/refs, but
I could see us tweaking that to permit several minutes of caching,
especially on big public sites like kernel.org. Having info/refs
report stale by 5 minutes is not an issue when writes to there
already have a lag due to the master-slave mirroring system in use.
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.
For those resources that are expected to be cacheable, the request
should be made using a GET.
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);
Rogan
--
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