Mercurial > hg
comparison mercurial/obsolete.py @ 32689:9933410bf763
obsstore: move marker version reading to a separate function
This allows us to read marker version without reading markers.
author | Jun Wu <quark@fb.com> |
---|---|
date | Fri, 02 Jun 2017 19:34:56 -0700 |
parents | 2c1400d43fd2 |
children | 3fad59faba8a |
comparison
equal
deleted
inserted
replaced
32688:2c1400d43fd2 | 32689:9933410bf763 |
---|---|
437 # mapping to read/write various marker formats | 437 # mapping to read/write various marker formats |
438 # <version> -> (decoder, encoder) | 438 # <version> -> (decoder, encoder) |
439 formats = {_fm0version: (_fm0readmarkers, _fm0encodeonemarker), | 439 formats = {_fm0version: (_fm0readmarkers, _fm0encodeonemarker), |
440 _fm1version: (_fm1readmarkers, _fm1encodeonemarker)} | 440 _fm1version: (_fm1readmarkers, _fm1encodeonemarker)} |
441 | 441 |
442 def _readmarkerversion(data): | |
443 return _unpack('>B', data[0:1])[0] | |
444 | |
442 @util.nogc | 445 @util.nogc |
443 def _readmarkers(data): | 446 def _readmarkers(data): |
444 """Read and enumerate markers from raw data""" | 447 """Read and enumerate markers from raw data""" |
445 off = 0 | 448 diskversion = _readmarkerversion(data) |
446 diskversion = _unpack('>B', data[off:off + 1])[0] | 449 off = 1 |
447 off += 1 | |
448 if diskversion not in formats: | 450 if diskversion not in formats: |
449 msg = _('parsing obsolete marker: unknown version %r') % diskversion | 451 msg = _('parsing obsolete marker: unknown version %r') % diskversion |
450 raise error.UnknownVersion(msg, version=diskversion) | 452 raise error.UnknownVersion(msg, version=diskversion) |
451 return diskversion, formats[diskversion][0](data, off) | 453 return diskversion, formats[diskversion][0](data, off) |
452 | 454 |