Re: [PATCH] Add persistent-https to contrib
- From
Junio C Hamano <gitster@pobox.com>
- Date
- May 24, 2012, 18:17 UTC
- Message-ID
- <7v62blxx2m.fsf@alter.siamese.dyndns.org>
- In-Reply-To
- <1337792767-18914-1-git-send-email-cranger@google.com>
Colby Ranger <cranger@google.com> writes:
Show 17 quoted lines
> Git over HTTPS has a high request startup latency, since the SSL > negotiation can take up to a second. In order to reduce this latency, > connections should be left open to the Git server across requests > (or invocations of the git commandline). > > Reduce SSL startup latency by running a daemon job that keeps > connections open to a Git server. The daemon job > (git-remote-persistent-https--proxy) is started on the first request > through the client binary (git-remote-persistent-https) and remains > running for 24 hours after the last request, or until a new daemon > binary is placed in the PATH. The client determines the daemon's > HTTP address by communicating over a UNIX socket with the daemon. >>From there, the rest of the Git protocol work is delegated to the > "git-remote-http" binary, with the environment's http_proxy set to > the daemon. > > Signed-off-by: Colby Ranger <cranger@google.com>
Clever. Do you have some numbers?
If this persistent proxy weren't in the picture, the git client would directly delegate its communication with the origin server to git-remote-https, and git-remote-https would interact with the credential API to handle authentication for "https://origin.server.xz/repo".
How does the persistent proxy sitting in between your git client and the origin server and/or the real proxy you have at the perimeter of your network interact with respect to authentication/authorization to access the repository or the real proxy? They will talk with the persistent proxy, and the persistent proxy will talk with the git client via git-remote-http, and I am assuming that this last git-remote-http will be the one that uses the credential API. Would it ask credential for "https://origin.server.xz/repo"? "http://origin.server.xz/repo"? Or would it be "persistent-https://origin.server.xz.repo"?
> contrib/persistent-https/COPYING | 202 +++++++++++++++++++++++++++++++++++
I do not mind carrying this in the contrib/ area (I am assuming that distributing Apache licensed software that does not link with GPLv2 core is OK). It may be just me, but a file called COPYING that does not have GPL text in it was a bit surprising. I wonder if it is more customary to call it either LICENSE (or perhaps LICENSE-2.0)?
Show 8 quoted lines
> contrib/persistent-https/README | 62 +++++++++++ > contrib/persistent-https/client.go | 178 ++++++++++++++++++++++++++++++ > contrib/persistent-https/main.go | 82 ++++++++++++++ > contrib/persistent-https/proxy.go | 190 ++++++++++++++++++++++++++++++++ > contrib/persistent-https/release.sh | 45 ++++++++ > contrib/persistent-https/socket.go | 97 +++++++++++++++++ > contrib/persistent-https/tar.sh | 40 +++++++ > 8 files changed, 896 insertions(+)
It might deserve its own contrib/persistent-https/Makefile in addition to your internal "release" scripts, though.