comparison mercurial/revlog.py @ 25459:0bda5bfaf0b1

revlog: move size limit check to addrevision This lets us add the name of the indexfile to the message.
author Matt Mackall <mpm@selenic.com>
date Thu, 04 Jun 2015 14:57:58 -0500
parents eee88912db0a
children 328739ea70c3
comparison
equal deleted inserted replaced
25458:4642f0b803ae 25459:0bda5bfaf0b1
165 # call the C implementation to parse the index data 165 # call the C implementation to parse the index data
166 index, cache = parsers.parse_index2(data, inline) 166 index, cache = parsers.parse_index2(data, inline)
167 return index, getattr(index, 'nodemap', None), cache 167 return index, getattr(index, 'nodemap', None), cache
168 168
169 def packentry(self, entry, node, version, rev): 169 def packentry(self, entry, node, version, rev):
170 uncompressedlength = entry[2]
171 if uncompressedlength > _maxentrysize:
172 raise RevlogError(
173 _("size of %d bytes exceeds maximum revlog storage of 2GiB")
174 % uncompressedlength)
175
176 p = _pack(indexformatng, *entry) 170 p = _pack(indexformatng, *entry)
177 if rev == 0: 171 if rev == 0:
178 p = _pack(versionformat, version) + p[4:] 172 p = _pack(versionformat, version) + p[4:]
179 return p 173 return p
180 174
1188 use different hashing method (and override checkhash() in such case) 1182 use different hashing method (and override checkhash() in such case)
1189 """ 1183 """
1190 if link == nullrev: 1184 if link == nullrev:
1191 raise RevlogError(_("attempted to add linkrev -1 to %s") 1185 raise RevlogError(_("attempted to add linkrev -1 to %s")
1192 % self.indexfile) 1186 % self.indexfile)
1187
1188 if len(text) > _maxentrysize:
1189 raise RevlogError(
1190 _("%s: size of %d bytes exceeds maximum revlog storage of 2GiB")
1191 % (self.indexfile, len(text)))
1192
1193 node = node or self.hash(text, p1, p2) 1193 node = node or self.hash(text, p1, p2)
1194 if node in self.nodemap: 1194 if node in self.nodemap:
1195 return node 1195 return node
1196 1196
1197 dfh = None 1197 dfh = None