##// END OF EJS Templates
revlog: move the `_chunk` method on the inner object...
marmoute -
r51985:9c8df10e default
parent child Browse files
Show More
@@ -3810,13 +3810,15 b' def perfrevlogchunks(ui, repo, file_=Non'
3810
3810
3811 def dochunk():
3811 def dochunk():
3812 rl.clearcaches()
3812 rl.clearcaches()
3813 # chunk used to be available directly on the revlog
3814 _chunk = getattr(rl, '_inner', rl)._chunk
3813 with reading(rl) as fh:
3815 with reading(rl) as fh:
3814 if fh is not None:
3816 if fh is not None:
3815 for rev in revs:
3817 for rev in revs:
3816 rl._chunk(rev, df=fh)
3818 _chunk(rev, df=fh)
3817 else:
3819 else:
3818 for rev in revs:
3820 for rev in revs:
3819 rl._chunk(rev)
3821 _chunk(rev)
3820
3822
3821 chunks = [None]
3823 chunks = [None]
3822
3824
@@ -718,6 +718,28 b' class _InnerRevlog:'
718
718
719 return start, self._segmentfile.read_chunk(start, length)
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 class revlog:
744 class revlog:
723 """
745 """
@@ -2336,28 +2358,6 b' class revlog:'
2336 p1, p2 = self.parents(node)
2358 p1, p2 = self.parents(node)
2337 return storageutil.hashrevisionsha1(text, p1, p2) != node
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 def _chunks(self, revs, targetsize=None):
2361 def _chunks(self, revs, targetsize=None):
2362 """Obtain decompressed chunks for the specified revisions.
2362 """Obtain decompressed chunks for the specified revisions.
2363
2363
@@ -2404,7 +2404,7 b' class revlog:'
2404 except OverflowError:
2404 except OverflowError:
2405 # issue4215 - we can't cache a run of chunks greater than
2405 # issue4215 - we can't cache a run of chunks greater than
2406 # 2G on Windows
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 decomp = self._inner.decompress
2409 decomp = self._inner.decompress
2410 # self._decompressor might be None, but will not be used in that case
2410 # self._decompressor might be None, but will not be used in that case
@@ -2484,7 +2484,7 b' class revlog:'
2484 revlog data directly. So this function needs raw revision data.
2484 revlog data directly. So this function needs raw revision data.
2485 """
2485 """
2486 if rev1 != nullrev and self.deltaparent(rev2) == rev1:
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 return mdiff.textdiff(self.rawdata(rev1), self.rawdata(rev2))
2489 return mdiff.textdiff(self.rawdata(rev1), self.rawdata(rev2))
2490
2490
@@ -3681,7 +3681,7 b' class revlog:'
3681 if destrevlog.delta_config.lazy_delta:
3681 if destrevlog.delta_config.lazy_delta:
3682 dp = self.deltaparent(rev)
3682 dp = self.deltaparent(rev)
3683 if dp != nullrev:
3683 if dp != nullrev:
3684 cachedelta = (dp, bytes(self._chunk(rev)))
3684 cachedelta = (dp, bytes(self._inner._chunk(rev)))
3685
3685
3686 sidedata = None
3686 sidedata = None
3687 if not cachedelta:
3687 if not cachedelta:
@@ -109,7 +109,7 b' def v1_censor(rl, tr, censornode, tombst'
109 b'revision having delta stored'
109 b'revision having delta stored'
110 )
110 )
111 raise error.Abort(m)
111 raise error.Abort(m)
112 rawtext = rl._chunk(rev)
112 rawtext = rl._inner._chunk(rev)
113 else:
113 else:
114 rawtext = rl.rawdata(rev)
114 rawtext = rl.rawdata(rev)
115
115
General Comments 0
You need to be logged in to leave comments. Login now