equal
deleted
inserted
replaced
857 |
857 |
858 def _chunks(self, revs): |
858 def _chunks(self, revs): |
859 '''faster version of [self._chunk(rev) for rev in revs] |
859 '''faster version of [self._chunk(rev) for rev in revs] |
860 |
860 |
861 Assumes that revs is in ascending order.''' |
861 Assumes that revs is in ascending order.''' |
|
862 if not revs: |
|
863 return [] |
862 start = self.start |
864 start = self.start |
863 length = self.length |
865 length = self.length |
864 inline = self._inline |
866 inline = self._inline |
865 iosize = self._io.size |
867 iosize = self._io.size |
866 buffer = util.buffer |
868 buffer = util.buffer |
867 |
869 |
868 l = [] |
870 l = [] |
869 ladd = l.append |
871 ladd = l.append |
870 |
872 |
871 # XXX assume for now that chunkcache is preloaded |
873 # preload the cache |
|
874 self._chunkraw(revs[0], revs[-1]) |
872 offset, data = self._chunkcache |
875 offset, data = self._chunkcache |
873 |
876 |
874 for rev in revs: |
877 for rev in revs: |
875 chunkstart = start(rev) |
878 chunkstart = start(rev) |
876 if inline: |
879 if inline: |
944 if generaldelta: |
947 if generaldelta: |
945 iterrev = e[3] |
948 iterrev = e[3] |
946 else: |
949 else: |
947 iterrev -= 1 |
950 iterrev -= 1 |
948 e = index[iterrev] |
951 e = index[iterrev] |
949 chain.reverse() |
|
950 base = iterrev |
|
951 |
952 |
952 if iterrev == cachedrev: |
953 if iterrev == cachedrev: |
953 # cache hit |
954 # cache hit |
954 text = self._cache[2] |
955 text = self._cache[2] |
|
956 else: |
|
957 chain.append(iterrev) |
|
958 chain.reverse() |
955 |
959 |
956 # drop cache to save memory |
960 # drop cache to save memory |
957 self._cache = None |
961 self._cache = None |
958 |
962 |
959 self._chunkraw(base, rev) |
963 bins = self._chunks(chain) |
960 if text is None: |
964 if text is None: |
961 text = str(self._chunkbase(base)) |
965 text = str(bins[0]) |
962 |
966 bins = bins[1:] |
963 bins = self._chunks(chain) |
967 |
964 text = mdiff.patches(text, bins) |
968 text = mdiff.patches(text, bins) |
965 |
969 |
966 text = self._checkhash(text, node, rev) |
970 text = self._checkhash(text, node, rev) |
967 |
971 |
968 self._cache = (node, rev, text) |
972 self._cache = (node, rev, text) |