Mercurial > public > mercurial-scm > hg
comparison mercurial/revlog.py @ 4984:b4066fcbd6ba
revlog: mark cache private
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Mon, 23 Jul 2007 20:44:08 -0500 |
parents | 4dbcfc6e359e |
children | e6525e459157 |
comparison
equal
deleted
inserted
replaced
4983:4dbcfc6e359e | 4984:b4066fcbd6ba |
---|---|
407 and can be used to implement COW semantics or the like. | 407 and can be used to implement COW semantics or the like. |
408 """ | 408 """ |
409 self.indexfile = indexfile | 409 self.indexfile = indexfile |
410 self.datafile = indexfile[:-2] + ".d" | 410 self.datafile = indexfile[:-2] + ".d" |
411 self.opener = opener | 411 self.opener = opener |
412 | |
413 self.indexstat = None | 412 self.indexstat = None |
414 self.cache = None | 413 self._cache = None |
415 self._chunkcache = None | 414 self._chunkcache = None |
416 self.defversion = REVLOG_DEFAULT_VERSION | 415 self.defversion = REVLOG_DEFAULT_VERSION |
417 if hasattr(opener, "defversion"): | 416 if hasattr(opener, "defversion"): |
418 self.defversion = opener.defversion | 417 self.defversion = opener.defversion |
419 if self.defversion & REVLOGNG: | 418 if self.defversion & REVLOGNG: |
889 | 888 |
890 def revision(self, node): | 889 def revision(self, node): |
891 """return an uncompressed revision of a given""" | 890 """return an uncompressed revision of a given""" |
892 if node == nullid: | 891 if node == nullid: |
893 return "" | 892 return "" |
894 if self.cache and self.cache[0] == node: | 893 if self._cache and self._cache[0] == node: |
895 return self.cache[2] | 894 return self._cache[2] |
896 | 895 |
897 # look up what we need to read | 896 # look up what we need to read |
898 text = None | 897 text = None |
899 rev = self.rev(node) | 898 rev = self.rev(node) |
900 base = self.base(rev) | 899 base = self.base(rev) |
904 df = None | 903 df = None |
905 else: | 904 else: |
906 df = self.opener(self.datafile) | 905 df = self.opener(self.datafile) |
907 | 906 |
908 # do we have useful data cached? | 907 # do we have useful data cached? |
909 if self.cache and self.cache[1] >= base and self.cache[1] < rev: | 908 if self._cache and self._cache[1] >= base and self._cache[1] < rev: |
910 base = self.cache[1] | 909 base = self._cache[1] |
911 text = self.cache[2] | 910 text = self._cache[2] |
912 self._loadindex(base, rev + 1) | 911 self._loadindex(base, rev + 1) |
913 else: | 912 else: |
914 self._loadindex(base, rev + 1) | 913 self._loadindex(base, rev + 1) |
915 text = self.chunk(base, df=df) | 914 text = self.chunk(base, df=df) |
916 | 915 |
923 p1, p2 = self.parents(node) | 922 p1, p2 = self.parents(node) |
924 if node != hash(text, p1, p2): | 923 if node != hash(text, p1, p2): |
925 raise RevlogError(_("integrity check failed on %s:%d") | 924 raise RevlogError(_("integrity check failed on %s:%d") |
926 % (self.datafile, rev)) | 925 % (self.datafile, rev)) |
927 | 926 |
928 self.cache = (node, rev, text) | 927 self._cache = (node, rev, text) |
929 return text | 928 return text |
930 | 929 |
931 def checkinlinesize(self, tr, fp=None): | 930 def checkinlinesize(self, tr, fp=None): |
932 if not self._inline: | 931 if not self._inline: |
933 return | 932 return |
1045 ifh.write(entry) | 1044 ifh.write(entry) |
1046 ifh.write(data[0]) | 1045 ifh.write(data[0]) |
1047 ifh.write(data[1]) | 1046 ifh.write(data[1]) |
1048 self.checkinlinesize(transaction, ifh) | 1047 self.checkinlinesize(transaction, ifh) |
1049 | 1048 |
1050 self.cache = (node, curr, text) | 1049 self._cache = (node, curr, text) |
1051 return node | 1050 return node |
1052 | 1051 |
1053 def ancestor(self, a, b): | 1052 def ancestor(self, a, b): |
1054 """calculate the least common ancestor of nodes a and b""" | 1053 """calculate the least common ancestor of nodes a and b""" |
1055 | 1054 |
1231 | 1230 |
1232 indexf = self.opener(self.indexfile, "a") | 1231 indexf = self.opener(self.indexfile, "a") |
1233 indexf.truncate(end) | 1232 indexf.truncate(end) |
1234 | 1233 |
1235 # then reset internal state in memory to forget those revisions | 1234 # then reset internal state in memory to forget those revisions |
1236 self.cache = None | 1235 self._cache = None |
1237 self._chunkcache = None | 1236 self._chunkcache = None |
1238 for x in xrange(rev, self.count()): | 1237 for x in xrange(rev, self.count()): |
1239 del self.nodemap[self.node(x)] | 1238 del self.nodemap[self.node(x)] |
1240 | 1239 |
1241 del self.index[rev:-1] | 1240 del self.index[rev:-1] |