Mercurial > public > mercurial-scm > hg-stable
diff mercurial/pure/parsers.py @ 52896:8de68446a5bd
index: remember the generaldelta config instead of getting it from the revlog
The code (especially the Rust code) was jumping in 4 dimensions to make sense
of what was going on because it wrongly assumed that we needed to somehow
be able to ask a generaldelta index for a non-generaldelta delta chain, which
doesn't make any sense.
Removing the cargo-culted/vestigial code, this is cleaner and less confusing.
author | Rapha?l Gom?s <rgomes@octobus.net> |
---|---|
date | Thu, 13 Feb 2025 13:13:05 +0100 |
parents | 72af9fa34832 |
children |
line wrap: on
line diff
--- a/mercurial/pure/parsers.py Thu Feb 13 13:10:11 2025 +0100 +++ b/mercurial/pure/parsers.py Thu Feb 13 13:13:05 2025 +0100 @@ -736,7 +736,7 @@ class IndexObject(BaseIndexObject): - def __init__(self, data: ByteString): + def __init__(self, data: ByteString, uses_generaldelta=False): assert len(data) % self.entry_size == 0, ( len(data), self.entry_size, @@ -813,7 +813,7 @@ class InlinedIndexObject(BaseIndexObject): - def __init__(self, data, inline=0): + def __init__(self, data, inline=0, uses_generaldelta=False): self._data = data self._lgt = self._inline_scan(None) self._inline_scan(self._lgt) @@ -856,7 +856,10 @@ def parse_index2( - data: ByteString, inline, format=revlog_constants.REVLOGV1 + data: ByteString, + inline, + uses_generaldelta, + format=revlog_constants.REVLOGV1, ) -> tuple[IndexObject | InlinedIndexObject, tuple[int, ByteString] | None]: if format == revlog_constants.CHANGELOGV2: return parse_index_cl_v2(data) @@ -865,9 +868,9 @@ cls = IndexObject2 else: cls = IndexObject - return cls(data), None + return cls(data, uses_generaldelta), None cls = InlinedIndexObject - return cls(data, inline), (0, data) + return cls(data, inline, uses_generaldelta), (0, data) def parse_index_cl_v2(data): @@ -986,9 +989,9 @@ return self.index_format.pack(*data) -def parse_index_devel_nodemap(data, inline): - """like parse_index2, but alway return a PersistentNodeMapIndexObject""" - return PersistentNodeMapIndexObject(data), None +def parse_index_devel_nodemap(data, inline, uses_generaldelta): + """like parse_index2, but always return a PersistentNodeMapIndexObject""" + return PersistentNodeMapIndexObject(data, uses_generaldelta), None def parse_dirstate(dmap, copymap, st):