[PATCH 2 of 2] revlog: linearize created changegroups in generaldelta revlogs
mpm at selenic.com
Wed May 18 15:55:59 CDT 2011
On Wed, 2011-05-18 at 16:23 +0200, Sune Foldager wrote:
> # HG changeset patch
> # User Sune Foldager <cryo at cyanite.org>
> # Date 1305727158 -7200
> # Node ID 36bb2e5488d2cdc8ac33a16f6809a300abd0aafc
> # Parent d05bc567f5368ac6ee1bd3f27a7746200906759f
> revlog: linearize created changegroups in generaldelta revlogs
> This greatly improves the speed of the bundling process, and reduces the
> bundle size considerably in general. If the repository is already ordered,
> this has little effect on both time and bundle size.
> For non-generaldelta clients, the reduced bundle size translates to a greatly
> reduced repository size, similar to shrinking the revlogs. For generaldelta
> clients the difference is minor.
> A new setting, bundle.reorder, has been added to override the default
> reordering behavior. It can be set to either 'auto' (the default), or any true
> or false value as a standard boolean setting, to either force the reordering
> on or off regardless of generaldelta.
> Some timing data from a relatively branch test repository follows. All
> bundling is done with --all --type none options.
So what I'm unclear about here is how this is intended to interact with
the future bundle format. In other words, I want to see a table.
old client new client
old server old bundle, no reorder old bundle, no reorder
new server, non-GD old bundle, no reorder old bundle, no reorder
new server, GD old bundle, reorder new bundle, no reorder
 reordering is expensive on the server in this case, skip it
 client can choose to do its own redelta here, saving CPU on the server
 reordering is needed because otherwise the pull does a lot of extra
work on the server
 reordering isn't needed because client can get deltabase in bundle
(This definition of "new" assumes both GD and the new bundle format are
enabled in the same release.)
Mathematics is the supreme nostalgia of our time.
More information about the Mercurial-devel