Show More
@@ -3810,13 +3810,15 b' def perfrevlogchunks(ui, repo, file_=Non' | |||
|
3810 | 3810 | |
|
3811 | 3811 | def dochunk(): |
|
3812 | 3812 | rl.clearcaches() |
|
3813 | # chunk used to be available directly on the revlog | |
|
3814 | _chunk = getattr(rl, '_inner', rl)._chunk | |
|
3813 | 3815 | with reading(rl) as fh: |
|
3814 | 3816 | if fh is not None: |
|
3815 | 3817 | for rev in revs: |
|
3816 |
|
|
|
3818 | _chunk(rev, df=fh) | |
|
3817 | 3819 | else: |
|
3818 | 3820 | for rev in revs: |
|
3819 |
|
|
|
3821 | _chunk(rev) | |
|
3820 | 3822 | |
|
3821 | 3823 | chunks = [None] |
|
3822 | 3824 |
@@ -718,6 +718,28 b' class _InnerRevlog:' | |||
|
718 | 718 | |
|
719 | 719 | return start, self._segmentfile.read_chunk(start, length) |
|
720 | 720 | |
|
721 | def _chunk(self, rev): | |
|
722 | """Obtain a single decompressed chunk for a revision. | |
|
723 | ||
|
724 | Accepts an integer revision and an optional already-open file handle | |
|
725 | to be used for reading. If used, the seek position of the file will not | |
|
726 | be preserved. | |
|
727 | ||
|
728 | Returns a str holding uncompressed data for the requested revision. | |
|
729 | """ | |
|
730 | compression_mode = self.index[rev][10] | |
|
731 | data = self.get_segment_for_revs(rev, rev)[1] | |
|
732 | if compression_mode == COMP_MODE_PLAIN: | |
|
733 | return data | |
|
734 | elif compression_mode == COMP_MODE_DEFAULT: | |
|
735 | return self._decompressor(data) | |
|
736 | elif compression_mode == COMP_MODE_INLINE: | |
|
737 | return self.decompress(data) | |
|
738 | else: | |
|
739 | msg = b'unknown compression mode %d' | |
|
740 | msg %= compression_mode | |
|
741 | raise error.RevlogError(msg) | |
|
742 | ||
|
721 | 743 | |
|
722 | 744 | class revlog: |
|
723 | 745 | """ |
@@ -2336,28 +2358,6 b' class revlog:' | |||
|
2336 | 2358 | p1, p2 = self.parents(node) |
|
2337 | 2359 | return storageutil.hashrevisionsha1(text, p1, p2) != node |
|
2338 | 2360 | |
|
2339 | def _chunk(self, rev): | |
|
2340 | """Obtain a single decompressed chunk for a revision. | |
|
2341 | ||
|
2342 | Accepts an integer revision and an optional already-open file handle | |
|
2343 | to be used for reading. If used, the seek position of the file will not | |
|
2344 | be preserved. | |
|
2345 | ||
|
2346 | Returns a str holding uncompressed data for the requested revision. | |
|
2347 | """ | |
|
2348 | compression_mode = self.index[rev][10] | |
|
2349 | data = self._inner.get_segment_for_revs(rev, rev)[1] | |
|
2350 | if compression_mode == COMP_MODE_PLAIN: | |
|
2351 | return data | |
|
2352 | elif compression_mode == COMP_MODE_DEFAULT: | |
|
2353 | return self._inner._decompressor(data) | |
|
2354 | elif compression_mode == COMP_MODE_INLINE: | |
|
2355 | return self._inner.decompress(data) | |
|
2356 | else: | |
|
2357 | msg = b'unknown compression mode %d' | |
|
2358 | msg %= compression_mode | |
|
2359 | raise error.RevlogError(msg) | |
|
2360 | ||
|
2361 | 2361 | def _chunks(self, revs, targetsize=None): |
|
2362 | 2362 | """Obtain decompressed chunks for the specified revisions. |
|
2363 | 2363 | |
@@ -2404,7 +2404,7 b' class revlog:' | |||
|
2404 | 2404 | except OverflowError: |
|
2405 | 2405 | # issue4215 - we can't cache a run of chunks greater than |
|
2406 | 2406 | # 2G on Windows |
|
2407 | return [self._chunk(rev) for rev in revschunk] | |
|
2407 | return [self._inner._chunk(rev) for rev in revschunk] | |
|
2408 | 2408 | |
|
2409 | 2409 | decomp = self._inner.decompress |
|
2410 | 2410 | # self._decompressor might be None, but will not be used in that case |
@@ -2484,7 +2484,7 b' class revlog:' | |||
|
2484 | 2484 | revlog data directly. So this function needs raw revision data. |
|
2485 | 2485 | """ |
|
2486 | 2486 | if rev1 != nullrev and self.deltaparent(rev2) == rev1: |
|
2487 | return bytes(self._chunk(rev2)) | |
|
2487 | return bytes(self._inner._chunk(rev2)) | |
|
2488 | 2488 | |
|
2489 | 2489 | return mdiff.textdiff(self.rawdata(rev1), self.rawdata(rev2)) |
|
2490 | 2490 | |
@@ -3681,7 +3681,7 b' class revlog:' | |||
|
3681 | 3681 | if destrevlog.delta_config.lazy_delta: |
|
3682 | 3682 | dp = self.deltaparent(rev) |
|
3683 | 3683 | if dp != nullrev: |
|
3684 | cachedelta = (dp, bytes(self._chunk(rev))) | |
|
3684 | cachedelta = (dp, bytes(self._inner._chunk(rev))) | |
|
3685 | 3685 | |
|
3686 | 3686 | sidedata = None |
|
3687 | 3687 | if not cachedelta: |
General Comments 0
You need to be logged in to leave comments.
Login now