Show More
@@ -1163,7 +1163,8 coreconfigitem( | |||||
1163 | # * sidedata compression |
|
1163 | # * sidedata compression | |
1164 | # * introduce a proper solution to reduce the number of filelog related files. |
|
1164 | # * introduce a proper solution to reduce the number of filelog related files. | |
1165 | # * Improvement to consider |
|
1165 | # * Improvement to consider | |
1166 | # - track compression mode in the index entris instead of the chunks |
|
1166 | # - avoid compression header in chunk using the default compression? | |
|
1167 | # - forbid "inline" compression mode entirely? | |||
1167 | # - split the data offset and flag field (the 2 bytes save are mostly trouble) |
|
1168 | # - split the data offset and flag field (the 2 bytes save are mostly trouble) | |
1168 | # - keep track of uncompressed -chunk- size (to preallocate memory better) |
|
1169 | # - keep track of uncompressed -chunk- size (to preallocate memory better) | |
1169 | # - keep track of chain base or size (probably not that useful anymore) |
|
1170 | # - keep track of chain base or size (probably not that useful anymore) |
@@ -689,6 +689,20 class revlog(object): | |||||
689 | # revlog.target instead of using `self.radix` |
|
689 | # revlog.target instead of using `self.radix` | |
690 | return self.radix |
|
690 | return self.radix | |
691 |
|
691 | |||
|
692 | def _get_decompressor(self, t): | |||
|
693 | try: | |||
|
694 | compressor = self._decompressors[t] | |||
|
695 | except KeyError: | |||
|
696 | try: | |||
|
697 | engine = util.compengines.forrevlogheader(t) | |||
|
698 | compressor = engine.revlogcompressor(self._compengineopts) | |||
|
699 | self._decompressors[t] = compressor | |||
|
700 | except KeyError: | |||
|
701 | raise error.RevlogError( | |||
|
702 | _(b'unknown compression type %s') % binascii.hexlify(t) | |||
|
703 | ) | |||
|
704 | return compressor | |||
|
705 | ||||
692 | @util.propertycache |
|
706 | @util.propertycache | |
693 | def _compressor(self): |
|
707 | def _compressor(self): | |
694 | engine = util.compengines[self._compengine] |
|
708 | engine = util.compengines[self._compengine] | |
@@ -2375,17 +2389,7 class revlog(object): | |||||
2375 | elif t == b'u': |
|
2389 | elif t == b'u': | |
2376 | return util.buffer(data, 1) |
|
2390 | return util.buffer(data, 1) | |
2377 |
|
2391 | |||
2378 | try: |
|
2392 | compressor = self._get_decompressor(t) | |
2379 | compressor = self._decompressors[t] |
|
|||
2380 | except KeyError: |
|
|||
2381 | try: |
|
|||
2382 | engine = util.compengines.forrevlogheader(t) |
|
|||
2383 | compressor = engine.revlogcompressor(self._compengineopts) |
|
|||
2384 | self._decompressors[t] = compressor |
|
|||
2385 | except KeyError: |
|
|||
2386 | raise error.RevlogError( |
|
|||
2387 | _(b'unknown compression type %s') % binascii.hexlify(t) |
|
|||
2388 | ) |
|
|||
2389 |
|
2393 | |||
2390 | return compressor.decompress(data) |
|
2394 | return compressor.decompress(data) | |
2391 |
|
2395 |
General Comments 0
You need to be logged in to leave comments.
Login now