size of repository with many branches, vs. git

Benoit Boissinot bboissin at gmail.com
Sun Mar 30 19:01:36 CDT 2008


On Sun, Mar 30, 2008 at 06:12:36PM -0500, Matt Mackall wrote:
> 
> On Mon, 2008-03-31 at 00:24 +0200, Benoit Boissinot wrote:
> > On Sun, Mar 30, 2008 at 11:04 PM, Matt Mackall <mpm at selenic.com> wrote:
> > I modified it a bit to always do a delta in the delta vs tip case and
> > I got (for the manifest of the kernel repo):
> 
> I'm not sure what you mean. All revisions are deltas against parent,
> with no full revisions?

yes, instead of taking the length from the index, I recomputed the diff
vs tip (so there are no full revision).
> 
> > 85000 226463816 43403672 19.17
> > 86000 228332602 43588129 19.09
> > 87000 230034416 43800074 19.04
> > 88000 232135027 44029133 18.97
> >      88247 232664773 44065644 18.94
> 
> I got basically the same result with the script I posted. Looks like the
> full revisions account for a fair amount of the size.
> 
> I've written a modified version that actually puts in the full
> revisions. It has an adjustable "factor" controlling the maximum amount
> of data to reconstruct a revision. In stock Mercurial, it's 2. In the
> above tests, it's infinite. With it set to 4 (and deltas against p1
> only), I get the following on the kernel repo:
> 
> 88011 283551764 64355029 22.70
> 103 11 82010 5991
> 
> 5991 = number of nonlinear deltas (~7%)
> 103 = number of full revisions in the original
> 11 = number in the optimized version
>  
> So, not far from the asymptotic maximum, with 2x the current I/O.

That's promising.

> (Also, because most of these deltas are still linear, we may be able to
> get most of the benefits of this without modifying the wire protocol. Or
> maybe not.)

It would just put more load on the server, right ?
> 
> > I tried sorting the revs to be linear and do a delta vs tip:
> 
> And here again. You've optimized the revision order and then did only
> deltas?

Yes.

I hacked it into changegroupsubset and did a clone --pull -r tip:

old
271M 2008-03-28 19:51 .hg/store/00manifest.d
5.4M 2008-03-28 19:51 .hg/store/00manifest.i

new
134M 2008-03-31 01:44 .hg/store/00manifest.d
5.4M 2008-03-31 01:44 .hg/store/00manifest.i

-- 
:wq


More information about the Mercurial mailing list