Show More
@@ -1300,16 +1300,13 b' class revlog(object):' | |||
|
1300 | 1300 | log, the rest are against the previous delta. |
|
1301 | 1301 | """ |
|
1302 | 1302 | |
|
1303 | #track the base of the current delta log | |
|
1304 | r = len(self) | |
|
1305 | t = r - 1 | |
|
1303 | # track the base of the current delta log | |
|
1306 | 1304 | node = None |
|
1307 | 1305 | |
|
1308 | base = prev = nullrev | |
|
1309 |
|
|
|
1306 | r = len(self) | |
|
1307 | end = 0 | |
|
1310 | 1308 | if r: |
|
1311 |
end = self.end( |
|
|
1312 | ||
|
1309 | end = self.end(r - 1) | |
|
1313 | 1310 | ifh = self.opener(self.indexfile, "a+") |
|
1314 | 1311 | isize = r * self._io.size |
|
1315 | 1312 | if self._inline: |
@@ -1344,16 +1341,19 b' class revlog(object):' | |||
|
1344 | 1341 | if not p in self.nodemap: |
|
1345 | 1342 | if self._shallow: |
|
1346 | 1343 | # add null entries for missing parents |
|
1347 |
|
|
|
1348 |
|
|
|
1349 |
|
|
|
1350 | 0, 0, base, nullrev, nullrev, nullrev, p) | |
|
1351 | self.index.insert(-1, e) | |
|
1352 |
|
|
|
1353 |
|
|
|
1354 | self.version, r) | |
|
1355 | ifh.write(entry) | |
|
1356 |
|
|
|
1344 | # XXX FIXME | |
|
1345 | #if base == nullrev: | |
|
1346 | # base = len(self) | |
|
1347 | #e = (offset_type(end, REVIDX_PUNCHED_FLAG), | |
|
1348 | # 0, 0, base, nullrev, nullrev, nullrev, p) | |
|
1349 | #self.index.insert(-1, e) | |
|
1350 | #self.nodemap[p] = r | |
|
1351 | #entry = self._io.packentry(e, self.node, | |
|
1352 | # self.version, r) | |
|
1353 | #ifh.write(entry) | |
|
1354 | #t, r = r, r + 1 | |
|
1355 | raise LookupError(p, self.indexfile, | |
|
1356 | _('unknown parent')) | |
|
1357 | 1357 | else: |
|
1358 | 1358 | raise LookupError(p, self.indexfile, |
|
1359 | 1359 | _('unknown parent')) |
@@ -1364,58 +1364,14 b' class revlog(object):' | |||
|
1364 | 1364 | if not chain in self.nodemap: |
|
1365 | 1365 | raise LookupError(chain, self.indexfile, _('unknown base')) |
|
1366 | 1366 | |
|
1367 | # full versions are inserted when the needed deltas become | |
|
1368 | # comparable to the uncompressed text or when the previous | |
|
1369 | # version is not the one we have a delta against. We use | |
|
1370 | # the size of the previous full rev as a proxy for the | |
|
1371 | # current size. | |
|
1372 | ||
|
1373 | if chain == prev: | |
|
1374 |
|
|
|
1375 | cdeltalen = len(cdelta[0]) + len(cdelta[1]) | |
|
1376 | textlen = mdiff.patchedsize(textlen, delta) | |
|
1377 | ||
|
1378 | if chain != prev or (end - start + cdeltalen) > textlen * 2: | |
|
1379 | # flush our writes here so we can read it in revision | |
|
1380 | if dfh: | |
|
1381 | dfh.flush() | |
|
1382 | ifh.flush() | |
|
1383 | text = self.revision(chain) | |
|
1384 | text = mdiff.patch(text, delta) | |
|
1385 | del delta | |
|
1386 | chk = self._addrevision(node, text, transaction, link, | |
|
1387 | p1, p2, None, ifh, dfh) | |
|
1388 | if not dfh and not self._inline: | |
|
1389 | # addrevision switched from inline to conventional | |
|
1390 | # reopen the index | |
|
1391 | dfh = self.opener(self.datafile, "a") | |
|
1392 | ifh = self.opener(self.indexfile, "a") | |
|
1393 | if chk != node: | |
|
1394 | raise RevlogError(_("consistency error adding group")) | |
|
1395 | textlen = len(text) | |
|
1396 | else: | |
|
1397 | e = (offset_type(end, 0), cdeltalen, textlen, base, | |
|
1398 | link, self.rev(p1), self.rev(p2), node) | |
|
1399 | self.index.insert(-1, e) | |
|
1400 | self.nodemap[node] = r | |
|
1401 | entry = self._io.packentry(e, self.node, self.version, r) | |
|
1402 | if self._inline: | |
|
1403 | ifh.write(entry) | |
|
1404 | ifh.write(cdelta[0]) | |
|
1405 | ifh.write(cdelta[1]) | |
|
1406 | self.checkinlinesize(transaction, ifh) | |
|
1407 | if not self._inline: | |
|
1408 | dfh = self.opener(self.datafile, "a") | |
|
1409 | ifh = self.opener(self.indexfile, "a") | |
|
1410 | else: | |
|
1411 | dfh.write(cdelta[0]) | |
|
1412 | dfh.write(cdelta[1]) | |
|
1413 | ifh.write(entry) | |
|
1414 | ||
|
1415 | t, r, chain, prev = r, r + 1, node, node | |
|
1416 | base = self.base(t) | |
|
1417 | start = self.start(base) | |
|
1418 | end = self.end(t) | |
|
1367 | chainrev = self.rev(chain) | |
|
1368 | chain = self._addrevision(node, None, transaction, link, | |
|
1369 | p1, p2, (chainrev, delta), ifh, dfh) | |
|
1370 | if not dfh and not self._inline: | |
|
1371 | # addrevision switched from inline to conventional | |
|
1372 | # reopen the index | |
|
1373 | dfh = self.opener(self.datafile, "a") | |
|
1374 | ifh = self.opener(self.indexfile, "a") | |
|
1419 | 1375 | finally: |
|
1420 | 1376 | if dfh: |
|
1421 | 1377 | dfh.close() |
General Comments 0
You need to be logged in to leave comments.
Login now