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

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.

Previous: Colby RangerNext: Shawn Pearce
Message 2 of 12 in “Add persistent-https to contrib”
  1. Add persistent-https to contribColby Ranger, May 23, 2012
  2. Junio C HamanoMay 24, 2012
  3. Shawn PearceMay 24, 2012
  4. Jeff KingMay 24, 2012
  5. Shawn PearceMay 24, 2012
  6. Shawn PearceMay 24, 2012
  7. Jeff KingMay 24, 2012
  8. Daniel StenbergMay 24, 2012
  9. Junio C HamanoMay 24, 2012
  10. Colby RangerMay 29, 2012
  11. Add persistent-https to contribColby Ranger, May 29, 2012
  12. Junio C HamanoMay 29, 2012

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.