Mercurial > public > mercurial-scm > hg
comparison mercurial/revlog.py @ 47257:87d057137f82
revlog: apply compression mode while reading sidedata
Right now, we only store things as PLAIN, but we are ready for some compression
now. Future changeset will start using some.
Differential Revision: https://phab.mercurial-scm.org/D10654
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Mon, 03 May 2021 22:48:31 +0200 |
parents | 2b69555e4875 |
children | c4dbb7636a12 |
comparison
equal
deleted
inserted
replaced
47256:2b69555e4875 | 47257:87d057137f82 |
---|---|
2059 if self._inline: | 2059 if self._inline: |
2060 sidedata_offset += self.index.entry_size * (1 + rev) | 2060 sidedata_offset += self.index.entry_size * (1 + rev) |
2061 if sidedata_size == 0: | 2061 if sidedata_size == 0: |
2062 return {} | 2062 return {} |
2063 | 2063 |
2064 segment = self._getsegment(sidedata_offset, sidedata_size) | 2064 comp_segment = self._getsegment(sidedata_offset, sidedata_size) |
2065 comp = self.index[rev][11] | |
2066 if comp == COMP_MODE_PLAIN: | |
2067 segment = comp_segment | |
2068 elif comp == COMP_MODE_DEFAULT: | |
2069 segment = self._decompressor(comp_segment) | |
2070 elif comp == COMP_MODE_INLINE: | |
2071 segment = self.decompress(comp_segment) | |
2072 else: | |
2073 msg = 'unknown compression mode %d' | |
2074 msg %= comp | |
2075 raise error.RevlogError(msg) | |
2076 | |
2065 sidedata = sidedatautil.deserialize_sidedata(segment) | 2077 sidedata = sidedatautil.deserialize_sidedata(segment) |
2066 return sidedata | 2078 return sidedata |
2067 | 2079 |
2068 def rawdata(self, nodeorrev, _df=None): | 2080 def rawdata(self, nodeorrev, _df=None): |
2069 """return an uncompressed raw data of a given node or revision number. | 2081 """return an uncompressed raw data of a given node or revision number. |