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

Yuya Nishihara yuya at tcha.org
Sun Nov 8 06:22:51 CST 2015


On Fri, 06 Nov 2015 10:47:16 -0500, Pierre-Yves David wrote:
> # HG changeset patch
> # User Pierre-Yves David <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/mercurial/ -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.
> 
> diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py
> --- a/mercurial/localrepo.py
> +++ b/mercurial/localrepo.py
> @@ -256,11 +256,11 @@ class localrepository(object):
>                      self.vfs.append(
>                          "00changelog.i",
>                          '\0\0\0\2' # represents revlogv2
>                          ' dummy changelog to prevent using the old repo layout'
>                      )
> -                if scmutil.gdconfig(self.ui):
> +                if scmutil.gdconfig(self.ui)[0]:
>                      self.requirements.add("generaldelta")
>                  if self.ui.configbool('experimental', 'treemanifest', False):
>                      self.requirements.add("treemanifest")
>                  if self.ui.configbool('experimental', 'manifestv2', False):
>                      self.requirements.add("manifestv2")
> @@ -356,10 +356,11 @@ class localrepository(object):
>              self.svfs.options['manifestcachesize'] = manifestcachesize
>          # experimental config: format.aggressivemergedeltas
>          aggressivemergedeltas = self.ui.configbool('format',
>              'aggressivemergedeltas', False)
>          self.svfs.options['aggressivemergedeltas'] = aggressivemergedeltas
> +        self.svfs.options['lazydeltabase'] = scmutil.gdconfig(self.ui)[1]
>  
>      def _writerequirements(self):
>          scmutil.writerequires(self.vfs, self.requirements)
>  
>      def _checknested(self, path):
> diff --git a/mercurial/revlog.py b/mercurial/revlog.py
> --- a/mercurial/revlog.py
> +++ b/mercurial/revlog.py
> @@ -228,10 +228,12 @@ class revlog(object):
>                  self._chunkcachesize = opts['chunkcachesize']
>              if 'maxchainlen' in opts:
>                  self._maxchainlen = opts['maxchainlen']
>              if 'aggressivemergedeltas' in opts:
>                  self._aggressivemergedeltas = opts['aggressivemergedeltas']
> +            if 'lazydeltabase' in opts:
> +                self._lazydeltabase = bool(opts['lazydeltabase'])

Just nitpicking, _lazydeltabase isn't initialized if no opts['lazydeltabase']
specified.


More information about the Mercurial-devel mailing list