Show More
@@ -1564,13 +1564,13 b' def debugindex(ui, repo, file_, **opts):' | |||||
1564 | except: |
|
1564 | except: | |
1565 | pp = [nullid, nullid] |
|
1565 | pp = [nullid, nullid] | |
1566 | ui.write("% 6d % 9d % 7d % 6d % 7d %s %s %s\n" % ( |
|
1566 | ui.write("% 6d % 9d % 7d % 6d % 7d %s %s %s\n" % ( | |
1567 | i, r.start(i), r.length(i), r.base(i), r.linkrev(i), |
|
1567 | i, r.start(i), r.length(i), r.chainbase(i), r.linkrev(i), | |
1568 | short(node), short(pp[0]), short(pp[1]))) |
|
1568 | short(node), short(pp[0]), short(pp[1]))) | |
1569 | elif format == 1: |
|
1569 | elif format == 1: | |
1570 | pr = r.parentrevs(i) |
|
1570 | pr = r.parentrevs(i) | |
1571 | ui.write("% 6d %04x % 8d % 8d % 8d % 6d % 6d % 6d % 6d %s\n" % ( |
|
1571 | ui.write("% 6d %04x % 8d % 8d % 8d % 6d % 6d % 6d % 6d %s\n" % ( | |
1572 | i, r.flags(i), r.start(i), r.length(i), r.rawsize(i), |
|
1572 | i, r.flags(i), r.start(i), r.length(i), r.rawsize(i), | |
1573 | r.base(i), r.linkrev(i), pr[0], pr[1], short(node))) |
|
1573 | r.chainbase(i), r.linkrev(i), pr[0], pr[1], short(node))) | |
1574 |
|
1574 | |||
1575 | def debugindexdot(ui, repo, file_): |
|
1575 | def debugindexdot(ui, repo, file_): | |
1576 | """dump an index DAG as a graphviz dot file""" |
|
1576 | """dump an index DAG as a graphviz dot file""" |
@@ -217,6 +217,7 b' class revlog(object):' | |||||
217 | self.datafile = indexfile[:-2] + ".d" |
|
217 | self.datafile = indexfile[:-2] + ".d" | |
218 | self.opener = opener |
|
218 | self.opener = opener | |
219 | self._cache = None |
|
219 | self._cache = None | |
|
220 | self._basecache = None | |||
220 | self._chunkcache = (0, '') |
|
221 | self._chunkcache = (0, '') | |
221 | self.index = [] |
|
222 | self.index = [] | |
222 | self._pcache = {} |
|
223 | self._pcache = {} | |
@@ -313,8 +314,13 b' class revlog(object):' | |||||
313 | return self.start(rev) + self.length(rev) |
|
314 | return self.start(rev) + self.length(rev) | |
314 | def length(self, rev): |
|
315 | def length(self, rev): | |
315 | return self.index[rev][1] |
|
316 | return self.index[rev][1] | |
316 | def base(self, rev): |
|
317 | def chainbase(self, rev): | |
317 |
|
|
318 | index = self.index | |
|
319 | base = index[rev][3] | |||
|
320 | while base != rev: | |||
|
321 | rev = base | |||
|
322 | base = index[rev][3] | |||
|
323 | return base | |||
318 | def flags(self, rev): |
|
324 | def flags(self, rev): | |
319 | return self.index[rev][0] & 0xFFFF |
|
325 | return self.index[rev][0] & 0xFFFF | |
320 | def rawsize(self, rev): |
|
326 | def rawsize(self, rev): | |
@@ -850,7 +856,6 b' class revlog(object):' | |||||
850 | # look up what we need to read |
|
856 | # look up what we need to read | |
851 | text = None |
|
857 | text = None | |
852 | rev = self.rev(node) |
|
858 | rev = self.rev(node) | |
853 | base = self.base(rev) |
|
|||
854 |
|
859 | |||
855 | # check rev flags |
|
860 | # check rev flags | |
856 | if self.flags(rev) & ~REVIDX_KNOWN_FLAGS: |
|
861 | if self.flags(rev) & ~REVIDX_KNOWN_FLAGS: | |
@@ -859,10 +864,13 b' class revlog(object):' | |||||
859 |
|
864 | |||
860 | # build delta chain |
|
865 | # build delta chain | |
861 | chain = [] |
|
866 | chain = [] | |
|
867 | index = self.index # for performance | |||
862 | iterrev = rev |
|
868 | iterrev = rev | |
863 | while iterrev != base and iterrev != cachedrev: |
|
869 | e = index[iterrev] | |
|
870 | while iterrev != e[3] and iterrev != cachedrev: | |||
864 | chain.append(iterrev) |
|
871 | chain.append(iterrev) | |
865 | iterrev -= 1 |
|
872 | iterrev -= 1 | |
|
873 | e = index[iterrev] | |||
866 | chain.reverse() |
|
874 | chain.reverse() | |
867 | base = iterrev |
|
875 | base = iterrev | |
868 |
|
876 | |||
@@ -984,7 +992,11 b' class revlog(object):' | |||||
984 | delta = mdiff.textdiff(ptext, t) |
|
992 | delta = mdiff.textdiff(ptext, t) | |
985 | data = compress(delta) |
|
993 | data = compress(delta) | |
986 | l = len(data[1]) + len(data[0]) |
|
994 | l = len(data[1]) + len(data[0]) | |
987 |
base = self. |
|
995 | basecache = self._basecache | |
|
996 | if basecache and basecache[0] == rev: | |||
|
997 | base = basecache[1] | |||
|
998 | else: | |||
|
999 | base = self.chainbase(rev) | |||
988 | dist = l + offset - self.start(base) |
|
1000 | dist = l + offset - self.start(base) | |
989 | return dist, l, data, base |
|
1001 | return dist, l, data, base | |
990 |
|
1002 | |||
@@ -1038,6 +1050,7 b' class revlog(object):' | |||||
1038 |
|
1050 | |||
1039 | if type(text) == str: # only accept immutable objects |
|
1051 | if type(text) == str: # only accept immutable objects | |
1040 | self._cache = (node, curr, text) |
|
1052 | self._cache = (node, curr, text) | |
|
1053 | self._basecache = (curr, base) | |||
1041 | return node |
|
1054 | return node | |
1042 |
|
1055 | |||
1043 | def group(self, nodelist, bundler): |
|
1056 | def group(self, nodelist, bundler): |
General Comments 0
You need to be logged in to leave comments.
Login now