comparison mercurial/revlog.py @ 40055:0a4625ffd6c0

revlog: move loading of index data into own method This will allow us to "reload" a revlog instance from a rewritten index file, which will be used in a subsequent commit. Differential Revision: https://phab.mercurial-scm.org/D4868
author Gregory Szorc <gregory.szorc@gmail.com>
date Tue, 02 Oct 2018 17:28:54 -0700
parents 801ccd8e67c0
children 324b4b10351e
comparison
equal deleted inserted replaced
40054:801ccd8e67c0 40055:0a4625ffd6c0
413 'greater than 0') % self._chunkcachesize) 413 'greater than 0') % self._chunkcachesize)
414 elif self._chunkcachesize & (self._chunkcachesize - 1): 414 elif self._chunkcachesize & (self._chunkcachesize - 1):
415 raise error.RevlogError(_('revlog chunk cache size %r is not a ' 415 raise error.RevlogError(_('revlog chunk cache size %r is not a '
416 'power of 2') % self._chunkcachesize) 416 'power of 2') % self._chunkcachesize)
417 417
418 self._loadindex(v, mmapindexthreshold)
419
420 def _loadindex(self, v, mmapindexthreshold):
418 indexdata = '' 421 indexdata = ''
419 self._initempty = True 422 self._initempty = True
420 try: 423 try:
421 with self._indexfp() as f: 424 with self._indexfp() as f:
422 if (mmapindexthreshold is not None and 425 if (mmapindexthreshold is not None and
423 self.opener.fstat(f).st_size >= mmapindexthreshold): 426 self.opener.fstat(f).st_size >= mmapindexthreshold):
424 indexdata = util.buffer(util.mmapread(f)) 427 indexdata = util.buffer(util.mmapread(f))
425 else: 428 else:
426 indexdata = f.read() 429 indexdata = f.read()
427 if len(indexdata) > 0: 430 if len(indexdata) > 0:
428 v = versionformat_unpack(indexdata[:4])[0] 431 v = versionformat_unpack(indexdata[:4])[0]