Mercurial 0.4e vs git network pull
Matt Mackall
mpm at selenic.com
Mon May 16 01:12:09 UTC 2005
On Sun, May 15, 2005 at 02:23:29PM -0400, Jeff Garzik wrote:
> Matt Mackall wrote:
> >On Sun, May 15, 2005 at 04:22:19AM -0700, Adam J. Richter wrote:
> >
> >>On Sun, 15 May 2005 10:54:05 +0200, Petr Baudis wrote:
> >>
> >>>Dear diary, on Thu, May 12, 2005 at 10:57:35PM CEST, I got a letter
> >>>where Matt Mackall <mpm at selenic.com> told me that...
> >>>
> >>>>Does this need an HTTP request (and round trip) per object? It appears
> >>>>to. That's 2200 requests/round trips for my 800 patch benchmark.
> >>
> >>>Yes it does. On the other side, it needs no server-side CGI. But I guess
> >>>it should be pretty easy to write some kind of server-side CGI streamer,
> >>>and it would then easily take just a single HTTP request (telling the
> >>>server the commit ID and receiving back all the objects).
> >>
> >> I don't understand what was wrong with Jeff Garzik's previous
> >>suggestion of using http/1.1 pipelining to coalesce the round trips.
> >
> >
> >You can't do pipelining if you can't look ahead far enough to fill the
> >pipe.
>
> Even if you cannot fill a pipeline, HTTP/1.1 is sufficiently useful
> simply by removing the per-request connection overhead.
Sure. It cuts round trips by a factor of 2. But that's just about all
it does.
Mercurial already does:
- approximately O(log(new changesets)) requests/data to find new changesets
- one request to get an entire changegroup (set of all new
changesets), which comes back all nicely pipelined and sorted by file
- delta transfer
In "dumb http" mode, ie what's been there since about day three, it
can do:
- one request (size proportional to total number of changesets) to
find new changesets
- approximately two requests per changed file to pull all deltas
(vs request per file revision)
- delta transfer
--
Mathematics is the supreme nostalgia of our time.
More information about the Mercurial
mailing list