Mercurial > public > mercurial-scm > hg
comparison mercurial/revlog.py @ 14196:e7483ec3c374
revlog: remove support for punched/shallow
The feature was never finished, and there has been restructuring going on
since it was added.
author | Sune Foldager <cryo@cyanite.org> |
---|---|
date | Thu, 05 May 2011 12:46:02 +0200 |
parents | 0013d3eeb826 |
children | d62d597b8974 |
comparison
equal
deleted
inserted
replaced
14195:0013d3eeb826 | 14196:e7483ec3c374 |
---|---|
32 REVLOG_DEFAULT_FORMAT = REVLOGNG | 32 REVLOG_DEFAULT_FORMAT = REVLOGNG |
33 REVLOG_DEFAULT_VERSION = REVLOG_DEFAULT_FORMAT | REVLOG_DEFAULT_FLAGS | 33 REVLOG_DEFAULT_VERSION = REVLOG_DEFAULT_FORMAT | REVLOG_DEFAULT_FLAGS |
34 REVLOGNG_FLAGS = REVLOGNGINLINEDATA | REVLOGSHALLOW | 34 REVLOGNG_FLAGS = REVLOGNGINLINEDATA | REVLOGSHALLOW |
35 | 35 |
36 # revlog index flags | 36 # revlog index flags |
37 REVIDX_PUNCHED_FLAG = 2 | 37 REVIDX_KNOWN_FLAGS = 0 |
38 REVIDX_KNOWN_FLAGS = REVIDX_PUNCHED_FLAG | |
39 | 38 |
40 # max size of revlog with inline data | 39 # max size of revlog with inline data |
41 _maxinline = 131072 | 40 _maxinline = 131072 |
42 _chunksize = 1048576 | 41 _chunksize = 1048576 |
43 | 42 |
889 self._cache = (node, rev, text) | 888 self._cache = (node, rev, text) |
890 return text | 889 return text |
891 | 890 |
892 def _checkhash(self, text, node, rev): | 891 def _checkhash(self, text, node, rev): |
893 p1, p2 = self.parents(node) | 892 p1, p2 = self.parents(node) |
894 if (node != hash(text, p1, p2) and | 893 if node != hash(text, p1, p2): |
895 not (self.flags(rev) & REVIDX_PUNCHED_FLAG)): | |
896 raise RevlogError(_("integrity check failed on %s:%d") | 894 raise RevlogError(_("integrity check failed on %s:%d") |
897 % (self.indexfile, rev)) | 895 % (self.indexfile, rev)) |
898 return text | 896 return text |
899 | 897 |
900 def checkinlinesize(self, tr, fp=None): | 898 def checkinlinesize(self, tr, fp=None): |
944 link - the linkrev data to add | 942 link - the linkrev data to add |
945 p1, p2 - the parent nodeids of the revision | 943 p1, p2 - the parent nodeids of the revision |
946 cachedelta - an optional precomputed delta | 944 cachedelta - an optional precomputed delta |
947 """ | 945 """ |
948 node = hash(text, p1, p2) | 946 node = hash(text, p1, p2) |
949 if (node in self.nodemap and | 947 if node in self.nodemap: |
950 (not self.flags(self.rev(node)) & REVIDX_PUNCHED_FLAG)): | |
951 return node | 948 return node |
952 | 949 |
953 dfh = None | 950 dfh = None |
954 if not self._inline: | 951 if not self._inline: |
955 dfh = self.opener(self.datafile, "a") | 952 dfh = self.opener(self.datafile, "a") |
1007 d = builddelta(prev) | 1004 d = builddelta(prev) |
1008 dist, l, data, base = d | 1005 dist, l, data, base = d |
1009 | 1006 |
1010 # full versions are inserted when the needed deltas | 1007 # full versions are inserted when the needed deltas |
1011 # become comparable to the uncompressed text | 1008 # become comparable to the uncompressed text |
1012 # or the base revision is punched | |
1013 if text is None: | 1009 if text is None: |
1014 textlen = mdiff.patchedsize(self.rawsize(cachedelta[0]), | 1010 textlen = mdiff.patchedsize(self.rawsize(cachedelta[0]), |
1015 cachedelta[1]) | 1011 cachedelta[1]) |
1016 else: | 1012 else: |
1017 textlen = len(text) | 1013 textlen = len(text) |
1018 if (d is None or dist > textlen * 2 or | 1014 if d is None or dist > textlen * 2: |
1019 (self.flags(base) & REVIDX_PUNCHED_FLAG)): | |
1020 text = buildtext() | 1015 text = buildtext() |
1021 data = compress(text) | 1016 data = compress(text) |
1022 l = len(data[1]) + len(data[0]) | 1017 l = len(data[1]) + len(data[0]) |
1023 base = curr | 1018 base = curr |
1024 | 1019 |
1118 cs = chunkdata['cs'] | 1113 cs = chunkdata['cs'] |
1119 deltabase = chunkdata['deltabase'] | 1114 deltabase = chunkdata['deltabase'] |
1120 delta = chunkdata['delta'] | 1115 delta = chunkdata['delta'] |
1121 | 1116 |
1122 link = linkmapper(cs) | 1117 link = linkmapper(cs) |
1123 if (node in self.nodemap and | 1118 if node in self.nodemap: |
1124 (not self.flags(self.rev(node)) & REVIDX_PUNCHED_FLAG)): | |
1125 # this can happen if two branches make the same change | 1119 # this can happen if two branches make the same change |
1126 chain = node | 1120 chain = node |
1127 continue | 1121 continue |
1128 | 1122 |
1129 for p in (p1, p2): | 1123 for p in (p1, p2): |
1130 if not p in self.nodemap: | 1124 if not p in self.nodemap: |
1131 if self._shallow: | 1125 raise LookupError(p, self.indexfile, |
1132 # add null entries for missing parents | 1126 _('unknown parent')) |
1133 # XXX FIXME | |
1134 #if base == nullrev: | |
1135 # base = len(self) | |
1136 #e = (offset_type(end, REVIDX_PUNCHED_FLAG), | |
1137 # 0, 0, base, nullrev, nullrev, nullrev, p) | |
1138 #self.index.insert(-1, e) | |
1139 #self.nodemap[p] = r | |
1140 #entry = self._io.packentry(e, self.node, | |
1141 # self.version, r) | |
1142 #ifh.write(entry) | |
1143 #t, r = r, r + 1 | |
1144 raise LookupError(p, self.indexfile, | |
1145 _('unknown parent')) | |
1146 else: | |
1147 raise LookupError(p, self.indexfile, | |
1148 _('unknown parent')) | |
1149 | 1127 |
1150 if deltabase not in self.nodemap: | 1128 if deltabase not in self.nodemap: |
1151 raise LookupError(deltabase, self.indexfile, | 1129 raise LookupError(deltabase, self.indexfile, |
1152 _('unknown delta base')) | 1130 _('unknown delta base')) |
1153 | 1131 |