HG bundle file size

Matt Mackall mpm at selenic.com
Wed Aug 6 08:38:46 UTC 2014


On Wed, 2014-08-06 at 13:37 +1200, Sebastian Unger wrote:
> Ahh, I think the attached script may be a minimal reproduction of the
> problem. Of course, here the file sizes are tiny since there is only one
> other file in the repo. Hope this helps.

I don't think this test shows what you think it shows. Mercurial sends
along a delta for the new manifest and that mentions fileA.. but none of
fileA's revisions are sent. The --debug flag shows:

list of changesets:
2977cc31231706b852845fe2c9f7efe66db47042
82c4e6648e7f0a5de6b5d34a52d34a7da1c8f012
bundling: 1/2 changesets (50.00%)
bundling: 2/2 changesets (100.00%)
bundling: 1/2 manifests (50.00%)
bundling: 2/2 manifests (100.00%)
bundling: fileB 1/2 files (50.00%)
bundling: fileC 2/2 files (100.00%)

Perhaps you have changesets X and Y on separate branches and there's a
large delta in the manifests between those branches. This will result in
a large delta being sent for manifest X -> manifest Y because the
current bundle format can only contain linear delta chains. This is
slowly being addressed as part of the much larger bundle2 effort that's
currently being spread across several releases. See 

http://mercurial.selenic.com/wiki/GeneralDelta
http://mercurial.selenic.com/wiki/BundleFormat2

-- 
Mathematics is the supreme nostalgia of our time.





More information about the Mercurial mailing list