851 return self._getchunk(start, length) |
851 return self._getchunk(start, length) |
852 |
852 |
853 def _chunk(self, rev): |
853 def _chunk(self, rev): |
854 return decompress(self._chunkraw(rev, rev)) |
854 return decompress(self._chunkraw(rev, rev)) |
855 |
855 |
|
856 def _chunks(self, revs): |
|
857 '''faster version of [self._chunk(rev) for rev in revs] |
|
858 |
|
859 Assumes that revs is in ascending order.''' |
|
860 start = self.start |
|
861 length = self.length |
|
862 inline = self._inline |
|
863 iosize = self._io.size |
|
864 getchunk = self._getchunk |
|
865 |
|
866 l = [] |
|
867 ladd = l.append |
|
868 |
|
869 for rev in revs: |
|
870 chunkstart = start(rev) |
|
871 if inline: |
|
872 chunkstart += (rev + 1) * iosize |
|
873 chunklength = length(rev) |
|
874 ladd(decompress(getchunk(chunkstart, chunklength))) |
|
875 |
|
876 return l |
|
877 |
856 def _chunkbase(self, rev): |
878 def _chunkbase(self, rev): |
857 return self._chunk(rev) |
879 return self._chunk(rev) |
858 |
880 |
859 def _chunkclear(self): |
881 def _chunkclear(self): |
860 self._chunkcache = (0, '') |
882 self._chunkcache = (0, '') |
931 |
953 |
932 self._chunkraw(base, rev) |
954 self._chunkraw(base, rev) |
933 if text is None: |
955 if text is None: |
934 text = str(self._chunkbase(base)) |
956 text = str(self._chunkbase(base)) |
935 |
957 |
936 bins = [self._chunk(r) for r in chain] |
958 bins = self._chunks(chain) |
937 text = mdiff.patches(text, bins) |
959 text = mdiff.patches(text, bins) |
938 |
960 |
939 text = self._checkhash(text, node, rev) |
961 text = self._checkhash(text, node, rev) |
940 |
962 |
941 self._cache = (node, rev, text) |
963 self._cache = (node, rev, text) |