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. 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. > Also, if everything is done via POST, you don't have to worry about a > wget-cloned server appearing to be "smart", since no "smarts" will ever > be returned in response to a GET request (and to the best of my > knowledge, wget can't mirror using POST). I think we fixed the wget-cloned server issue by requesting that clients use POST /info/refs to identify a smart server. A wget-cloned repository will fail on this, and the client can fallback to GET /info/refs and assume it must use the object walker to fetch (or WebDAV to push). A smart server would respond to the POST /info/refs request correctly and the client would know its smart. -- Shawn. -- 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