Mercurial > public > mercurial-scm > hg
diff mercurial/revlog.py @ 47254:eac3591abbf4
revlog: add a `_get_decompressor` method
This logic is non-trivial and we will need to reuse it.
Differential Revision: https://phab.mercurial-scm.org/D10651
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Mon, 03 May 2021 21:04:55 +0200 |
parents | b876f0bf7366 |
children | ff9fd7107d11 |
line wrap: on
line diff
--- a/mercurial/revlog.py Mon May 03 19:46:25 2021 +0200 +++ b/mercurial/revlog.py Mon May 03 21:04:55 2021 +0200 @@ -689,6 +689,20 @@ # revlog.target instead of using `self.radix` return self.radix + def _get_decompressor(self, t): + try: + compressor = self._decompressors[t] + except KeyError: + try: + engine = util.compengines.forrevlogheader(t) + compressor = engine.revlogcompressor(self._compengineopts) + self._decompressors[t] = compressor + except KeyError: + raise error.RevlogError( + _(b'unknown compression type %s') % binascii.hexlify(t) + ) + return compressor + @util.propertycache def _compressor(self): engine = util.compengines[self._compengine] @@ -2375,17 +2389,7 @@ elif t == b'u': return util.buffer(data, 1) - try: - compressor = self._decompressors[t] - except KeyError: - try: - engine = util.compengines.forrevlogheader(t) - compressor = engine.revlogcompressor(self._compengineopts) - self._decompressors[t] = compressor - except KeyError: - raise error.RevlogError( - _(b'unknown compression type %s') % binascii.hexlify(t) - ) + compressor = self._get_decompressor(t) return compressor.decompress(data)