Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/localrepo.py @ 2232:ef3c039e7ab8
Always remove appendopener tmp files (fixes issue235).
test-hup triggered this bug by killing "hg serve --stdio".
author | Thomas Arendsen Hein <thomas@intevation.de> |
---|---|
date | Tue, 09 May 2006 17:03:00 +0200 |
parents | 332950340788 |
children | 181b0643ffb1 |
comparison
equal
deleted
inserted
replaced
2231:9a2f4b2e7cf1 | 2232:ef3c039e7ab8 |
---|---|
1475 | 1475 |
1476 tr = self.transaction() | 1476 tr = self.transaction() |
1477 | 1477 |
1478 # write changelog and manifest data to temp files so | 1478 # write changelog and manifest data to temp files so |
1479 # concurrent readers will not see inconsistent view | 1479 # concurrent readers will not see inconsistent view |
1480 cl = appendfile.appendchangelog(self.opener, self.changelog.version) | 1480 cl = None |
1481 | 1481 try: |
1482 oldheads = len(cl.heads()) | 1482 cl = appendfile.appendchangelog(self.opener, self.changelog.version) |
1483 | 1483 |
1484 # pull off the changeset group | 1484 oldheads = len(cl.heads()) |
1485 self.ui.status(_("adding changesets\n")) | 1485 |
1486 co = cl.tip() | 1486 # pull off the changeset group |
1487 chunkiter = changegroup.chunkiter(source) | 1487 self.ui.status(_("adding changesets\n")) |
1488 cn = cl.addgroup(chunkiter, csmap, tr, 1) # unique | 1488 co = cl.tip() |
1489 cnr, cor = map(cl.rev, (cn, co)) | |
1490 if cn == nullid: | |
1491 cnr = cor | |
1492 changesets = cnr - cor | |
1493 | |
1494 mf = appendfile.appendmanifest(self.opener, self.manifest.version) | |
1495 | |
1496 # pull off the manifest group | |
1497 self.ui.status(_("adding manifests\n")) | |
1498 mm = mf.tip() | |
1499 chunkiter = changegroup.chunkiter(source) | |
1500 mo = mf.addgroup(chunkiter, revmap, tr) | |
1501 | |
1502 # process the files | |
1503 self.ui.status(_("adding file changes\n")) | |
1504 while 1: | |
1505 f = changegroup.getchunk(source) | |
1506 if not f: | |
1507 break | |
1508 self.ui.debug(_("adding %s revisions\n") % f) | |
1509 fl = self.file(f) | |
1510 o = fl.count() | |
1511 chunkiter = changegroup.chunkiter(source) | 1489 chunkiter = changegroup.chunkiter(source) |
1512 n = fl.addgroup(chunkiter, revmap, tr) | 1490 cn = cl.addgroup(chunkiter, csmap, tr, 1) # unique |
1513 revisions += fl.count() - o | 1491 cnr, cor = map(cl.rev, (cn, co)) |
1514 files += 1 | 1492 if cn == nullid: |
1515 | 1493 cnr = cor |
1516 # write order here is important so concurrent readers will see | 1494 changesets = cnr - cor |
1517 # consistent view of repo | 1495 |
1518 mf.writedata() | 1496 mf = None |
1519 cl.writedata() | 1497 try: |
1498 mf = appendfile.appendmanifest(self.opener, | |
1499 self.manifest.version) | |
1500 | |
1501 # pull off the manifest group | |
1502 self.ui.status(_("adding manifests\n")) | |
1503 mm = mf.tip() | |
1504 chunkiter = changegroup.chunkiter(source) | |
1505 mo = mf.addgroup(chunkiter, revmap, tr) | |
1506 | |
1507 # process the files | |
1508 self.ui.status(_("adding file changes\n")) | |
1509 while 1: | |
1510 f = changegroup.getchunk(source) | |
1511 if not f: | |
1512 break | |
1513 self.ui.debug(_("adding %s revisions\n") % f) | |
1514 fl = self.file(f) | |
1515 o = fl.count() | |
1516 chunkiter = changegroup.chunkiter(source) | |
1517 n = fl.addgroup(chunkiter, revmap, tr) | |
1518 revisions += fl.count() - o | |
1519 files += 1 | |
1520 | |
1521 # write order here is important so concurrent readers will see | |
1522 # consistent view of repo | |
1523 mf.writedata() | |
1524 finally: | |
1525 if mf: | |
1526 mf.cleanup() | |
1527 cl.writedata() | |
1528 finally: | |
1529 if cl: | |
1530 cl.cleanup() | |
1520 | 1531 |
1521 # make changelog and manifest see real files again | 1532 # make changelog and manifest see real files again |
1522 self.changelog = changelog.changelog(self.opener, self.changelog.version) | 1533 self.changelog = changelog.changelog(self.opener, self.changelog.version) |
1523 self.manifest = manifest.manifest(self.opener, self.manifest.version) | 1534 self.manifest = manifest.manifest(self.opener, self.manifest.version) |
1524 self.changelog.checkinlinesize(tr) | 1535 self.changelog.checkinlinesize(tr) |