On disk bundle in a general delta world

Pierre-Yves David pierre-yves.david at ens-lyon.org
Sat Aug 29 00:16:20 UTC 2015


Hi there,

We are getting clsoe to be able to use general delta for new clone. 
However, there is a significant issue that remains: on disk bundle.

#1: Why

Bundle create on disk (from hg bundle, and strip's backup ( and hg 
incoming -i)) are still bundle1 only, and therefore unable to use 
general delta.

This mean that stripping could spend a significant amount of time 
recomputing delta to put them back into a last-delta format.

We have the ability to create bundle2 bundle on strip (and hg bundle?) 
but it is turned of by default as the bundle2 bundle are incompatible 
with older version of Mercurial.

#2: When

It makes no doubt that we want to move to on disk bundle2 at some point. 
Because it is able to store much more information  regarding, phases, 
bookmarks, obsmarkers, etc.

But this change will be backward compatibility breaking. When do we want 
to perform the following event (in regards with each other).

a)  general delta on in `hg init`
b)  bundle2 on strip
c) bundle2 on `hg incoming -b B`
d)  bundle2 on `hg bundle`


#3: Naming

Should we change the naming scheme for the bundle. Thing are currently 
call `.hg` should we move to `.hg2`? And given that there will likely be 
gradual improvement in the bundle2 format, incompatible with older 
version. Should we do .hg20 -> .hg21 .hg22 (or .hg2a, etc)

#4: Ui

We probably want to be able to control the type of bundle created 
(especially from `hg bundle`, what kind of UI do we want there)

-- 
Pierre-Yves David


More information about the Mercurial-devel mailing list