comparison mercurial/revlog.py @ 33168:664d6f6c2a48 stable

revlog: backed out changeset e9d325cfe071 We'll move this to the default branch.
author Augie Fackler <augie@google.com>
date Tue, 04 Jul 2017 10:17:14 -0400
parents e9d325cfe071
children 85d1ac011582
comparison
equal deleted inserted replaced
33141:e9d325cfe071 33168:664d6f6c2a48
280 self._pcache = {} 280 self._pcache = {}
281 # Mapping of revision integer to full node. 281 # Mapping of revision integer to full node.
282 self._nodecache = {nullid: nullrev} 282 self._nodecache = {nullid: nullrev}
283 self._nodepos = None 283 self._nodepos = None
284 self._compengine = 'zlib' 284 self._compengine = 'zlib'
285 self._maxdeltachainspan = -1
286 285
287 v = REVLOG_DEFAULT_VERSION 286 v = REVLOG_DEFAULT_VERSION
288 opts = getattr(opener, 'options', None) 287 opts = getattr(opener, 'options', None)
289 if opts is not None: 288 if opts is not None:
290 if 'revlogv1' in opts: 289 if 'revlogv1' in opts:
299 if 'aggressivemergedeltas' in opts: 298 if 'aggressivemergedeltas' in opts:
300 self._aggressivemergedeltas = opts['aggressivemergedeltas'] 299 self._aggressivemergedeltas = opts['aggressivemergedeltas']
301 self._lazydeltabase = bool(opts.get('lazydeltabase', False)) 300 self._lazydeltabase = bool(opts.get('lazydeltabase', False))
302 if 'compengine' in opts: 301 if 'compengine' in opts:
303 self._compengine = opts['compengine'] 302 self._compengine = opts['compengine']
304 if 'maxdeltachainspan' in opts:
305 self._maxdeltachainspan = opts['maxdeltachainspan']
306 303
307 if self._chunkcachesize <= 0: 304 if self._chunkcachesize <= 0:
308 raise RevlogError(_('revlog chunk cache size %r is not greater ' 305 raise RevlogError(_('revlog chunk cache size %r is not greater '
309 'than 0') % self._chunkcachesize) 306 'than 0') % self._chunkcachesize)
310 elif self._chunkcachesize & (self._chunkcachesize - 1): 307 elif self._chunkcachesize & (self._chunkcachesize - 1):
1597 # - 'dist' is the distance from the base revision -- bounding it limits 1594 # - 'dist' is the distance from the base revision -- bounding it limits
1598 # the amount of I/O we need to do. 1595 # the amount of I/O we need to do.
1599 # - 'compresseddeltalen' is the sum of the total size of deltas we need 1596 # - 'compresseddeltalen' is the sum of the total size of deltas we need
1600 # to apply -- bounding it limits the amount of CPU we consume. 1597 # to apply -- bounding it limits the amount of CPU we consume.
1601 dist, l, data, base, chainbase, chainlen, compresseddeltalen = d 1598 dist, l, data, base, chainbase, chainlen, compresseddeltalen = d
1602 1599 if (dist > textlen * 4 or l > textlen or
1603 defaultmax = textlen * 4
1604 maxdist = self._maxdeltachainspan
1605 if not maxdist:
1606 maxdist = dist # ensure the conditional pass
1607 maxdist = max(maxdist, defaultmax)
1608 if (dist > maxdist or l > textlen or
1609 compresseddeltalen > textlen * 2 or 1600 compresseddeltalen > textlen * 2 or
1610 (self._maxchainlen and chainlen > self._maxchainlen)): 1601 (self._maxchainlen and chainlen > self._maxchainlen)):
1611 return False 1602 return False
1612 1603
1613 return True 1604 return True