# HG changeset patch # User Matt Mackall # Date 1185241448 18000 # Node ID 8d30004ada40af8deee9e9e0a925bf837db98114 # Parent 58cc017ec7e0207898d7d3e5a244726ff0492fa6 revlog: some basic code reordering diff --git a/mercurial/revlog.py b/mercurial/revlog.py --- a/mercurial/revlog.py +++ b/mercurial/revlog.py @@ -15,17 +15,30 @@ from i18n import _ import binascii, changegroup, errno, ancestor, mdiff, os import sha, struct, util, zlib -# revlog version strings +# revlog flags REVLOGV0 = 0 REVLOGNG = 1 - -# revlog flags REVLOGNGINLINEDATA = (1 << 16) REVLOG_DEFAULT_FLAGS = REVLOGNGINLINEDATA - REVLOG_DEFAULT_FORMAT = REVLOGNG REVLOG_DEFAULT_VERSION = REVLOG_DEFAULT_FORMAT | REVLOG_DEFAULT_FLAGS +class RevlogError(Exception): + pass +class LookupError(RevlogError): + pass + +def getoffset(q): + if q & 0xFFFF: + raise RevlogError(_('incompatible revision flag %x') % q) + return int(q >> 16) + +def gettype(q): + return int(q & 0xFFFF) + +def offset_type(offset, type): + return long(long(offset) << 16 | type) + def hash(text, p1, p2): """generate a hash from the given text and its parent hashes @@ -68,22 +81,6 @@ def decompress(bin): return bin[1:] raise RevlogError(_("unknown compression type %r") % t) -indexformatv0 = ">4l20s20s20s" -v0shaoffset = 56 -# index ng: -# 6 bytes offset -# 2 bytes flags -# 4 bytes compressed length -# 4 bytes uncompressed length -# 4 bytes: base rev -# 4 bytes link rev -# 4 bytes parent 1 rev -# 4 bytes parent 2 rev -# 32 bytes: nodeid -indexformatng = ">Qiiiiii20s12x" -ngshaoffset = 32 -versionformat = ">I" - class lazyparser(object): """ this class avoids the need to parse the entirety of large indices @@ -289,21 +286,8 @@ class lazymap(object): def __delitem__(self, key): del self.p.map[key] -class RevlogError(Exception): - pass -class LookupError(RevlogError): - pass - -def getoffset(q): - if q & 0xFFFF: - raise RevlogError(_('incompatible revision flag %x') % q) - return int(q >> 16) - -def gettype(q): - return int(q & 0xFFFF) - -def offset_type(offset, type): - return long(long(offset) << 16 | type) +indexformatv0 = ">4l20s20s20s" +v0shaoffset = 56 class revlogoldio(object): def __init__(self): @@ -334,6 +318,20 @@ class revlogoldio(object): node(entry[5]), node(entry[6]), entry[7]) return struct.pack(indexformatv0, *e2) +# index ng: +# 6 bytes offset +# 2 bytes flags +# 4 bytes compressed length +# 4 bytes uncompressed length +# 4 bytes: base rev +# 4 bytes link rev +# 4 bytes parent 1 rev +# 4 bytes parent 2 rev +# 32 bytes: nodeid +indexformatng = ">Qiiiiii20s12x" +ngshaoffset = 32 +versionformat = ">I" + class revlogio(object): def __init__(self): self.size = struct.calcsize(indexformatng) @@ -1253,5 +1251,3 @@ class revlog(object): di = 0 return (dd, di) - -