[PATCH 2 of 2 mainline] format: introduce 'format.generaldelta=accept'

Matt Mackall mpm at selenic.com
Mon Nov 9 14:59:03 CST 2015


On Sun, 2015-11-08 at 12:09 -0500, Pierre-Yves David wrote:
> 
> On 11/08/2015 11:19 AM, Gregory Szorc wrote:
> > On Fri, Nov 6, 2015 at 7:47 AM, Pierre-Yves David
> > <pierre-yves.david at ens-lyon.org <mailto:pierre-yves.david at ens-lyon.
> > org>>
> > wrote:
> > 
> >     # HG changeset patch
> >     # User Pierre-Yves David <pierre-yves.david at fb.com
> >     <mailto:pierre-yves.david at fb.com>>
> >     # Date 1446479952 0
> >     #      Mon Nov 02 15:59:12 2015 +0000
> >     # Node ID 2176eee3dd6c33a51fab5cf4b4e0ac4fba034f12
> >     # Parent  69c64edb25dd96a23564db5b23b8b432b343ec88
> >     # EXP-Topic generaldelta
> >     # Available At http://hg.netv6.net/marmoute-wip/mercurial/
> >     #              hg pull http://hg.netv6.net/marmoute-wip/mercuri
> > al/
> >     -r 2176eee3dd6c
> >     format: introduce 'format.generaldelta=accept'
> > 
> >     This value will make repository created as general delta by
> > default
> >     but will not
> >     make Mercurial aggressively recompute delta for all incoming
> > bundle.
> >     Instead,
> >     the delta contained in the bundle will be used. This will allow
> > use
> >     to start having
> >     general delta repository created everywhere without triggering
> > massive
> >     re-computation cost for all new clients cloning from old
> > server.
> > 
> > 
> > I'll raise a similar objection that I raised IRL at the Sprint: I
> > find
> > overloading format.generaldelta to be both a bool and a special
> > string
> > value to be somewhat confusing. It feels like there are two
> > separate
> > intents we wish to communicate: a) create revlogs with generaldelta
> > b)
> > whether to force generaldelta on imported data. Shoehorning them
> > into
> > the same config doesn't tickle me the right way.
> 
> This is sensible concern but I'm not sure what is the best answer
> there. 
> By chance, we have 2 months to go until the freeze so I'm sure
> "Someone 
> who care enough about it" ;-) will figure out what we should do in
> that 
> interval.
> 
> > I also think I brought this up at the sprint, but I had this idea
> > of
> > allowing additional controls for forcing generaldelta. e.g. if the
> > incoming changegroup is only 20 changesets, it's probably fine to
> > take
> > the re-encode hit. But if it's 2000 changesets, then we may want to
> > avoid re-encoding.
> 
> I'm open to improvement in that area, but done is better than
> perfect. 
> I, personnaly, focussing on getting some form of generaldelta enabled
> by 
> default. Anyone who want to push that further is welcome to do so.
> 
> I remember a couple of other point discussed that the sprint and I
> think 
> we agree you would look at them by the freeze. So we have plently of 
> time to adjust our approach here.

Here's my proposal: the new option should be named
format.allowgeneraldelta (a boolean that defaults to true).

Works like this (with generaldelta abbreviated):

config       ||      behavior
allowgd | gd || add gd to requires | compute gd | pull gd
   n       n         n                   n           n
   n       y         y                   y           y
   y       n         y                   n           y
   y       y         y                   y           y

-- 
Mathematics is the supreme nostalgia of our time.



More information about the Mercurial-devel mailing list