size of repository with many branches, vs. git

Matt Mackall mpm at selenic.com
Sat Mar 29 17:35:11 CDT 2008


On Sat, 2008-03-29 at 23:59 +0300, Dov Feldstern wrote:
> The conversion went well (with some help from Patrick), but the
> result 
> was disappointing to me: the size of the cloned repository is between 
> ~700MB (with no --datesort, converted in chunks of 1000 revisions at a 
> time) to ~1GB (with --datesort, which probably better reflects what 
> would happen over time as the project is tracked in real-time from svn). 
> By comparison, the entire git repository (freshly cloned) is only ~200MB!

Mercurial compression is suboptimal in the following ways:

- every working directory file in the history has a backing repository
file so the typical repository will grow by (filesystem block size *
number of files in history)/2
- copies and renames store a full new revision at the target
- revlog storage is linear so interleaving of branches in a single
revlog reduces compression

The last problem mostly appears in the manifest as it gets touched by
every commit on every branch. How many files are in your working dir,
how many files are in your store, how many changesets do you have, and
how big is your 00manifest.i?

-- 
Mathematics is the supreme nostalgia of our time.



More information about the Mercurial mailing list