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

Pierre-Yves David pierre-yves.david at ens-lyon.org
Sun Nov 8 10:57:05 CST 2015



On 11/08/2015 07:22 AM, Yuya Nishihara wrote:
> 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.

Nice catch, V2 coming.

-- 
Pierre-Yves David


More information about the Mercurial-devel mailing list