Mercurial > hg-stable
changeset 51111:c2d2e5b65def
revlog: minor refactor in the chunk gather process
We will introduce some caching in this method in the next changeset, we make
some of the most "disruptive" change first as touching this could break (and
maybe did during the development process).
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Fri, 27 Oct 2023 02:57:09 +0200 |
parents | d83d788590a8 |
children | 0250e45040f1 |
files | mercurial/revlog.py |
diffstat | 1 files changed, 10 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/revlog.py Tue Oct 24 11:08:49 2023 +0200 +++ b/mercurial/revlog.py Fri Oct 27 02:57:09 2023 +0200 @@ -901,6 +901,8 @@ l = [] ladd = l.append + chunks = [] + ladd = chunks.append if not self.data_config.with_sparse_read: slicedchunks = (revs,) @@ -923,7 +925,8 @@ except OverflowError: # issue4215 - we can't cache a run of chunks greater than # 2G on Windows - return [self._chunk(rev) for rev in revschunk] + for rev in revschunk: + ladd((rev, self._chunk(rev))) decomp = self.decompress # self._decompressor might be None, but will not be used in that case @@ -936,17 +939,18 @@ comp_mode = self.index[rev][10] c = buffer(data, chunkstart - offset, chunklength) if comp_mode == COMP_MODE_PLAIN: - ladd(c) + c = c elif comp_mode == COMP_MODE_INLINE: - ladd(decomp(c)) + c = decomp(c) elif comp_mode == COMP_MODE_DEFAULT: - ladd(def_decomp(c)) + c = def_decomp(c) else: msg = b'unknown compression mode %d' msg %= comp_mode raise error.RevlogError(msg) - - return l + ladd((rev, c)) + + return [x[1] for x in chunks] def raw_text(self, node, rev): """return the possibly unvalidated rawtext for a revision