Show More
@@ -134,10 +134,16 b' class appendopener(object):' | |||
|
134 | 134 | s = fp.read() |
|
135 | 135 | fp.close() |
|
136 | 136 | os.unlink(tmpname) |
|
137 | del self.tmpnames[name] | |
|
137 | 138 | fp = self.realopener(name, 'a') |
|
138 | 139 | fp.write(s) |
|
139 | 140 | fp.close() |
|
140 | 141 | |
|
142 | def cleanup(self): | |
|
143 | '''delete temp files (this discards unwritten data!)''' | |
|
144 | for tmpname in self.tmpnames.values(): | |
|
145 | os.unlink(tmpname) | |
|
146 | ||
|
141 | 147 | # files for changelog and manifest are in different appendopeners, so |
|
142 | 148 | # not mixed up together. |
|
143 | 149 |
@@ -1477,46 +1477,57 b' class localrepository(object):' | |||
|
1477 | 1477 | |
|
1478 | 1478 | # write changelog and manifest data to temp files so |
|
1479 | 1479 | # concurrent readers will not see inconsistent view |
|
1480 | cl = appendfile.appendchangelog(self.opener, self.changelog.version) | |
|
1480 | cl = None | |
|
1481 | try: | |
|
1482 | cl = appendfile.appendchangelog(self.opener, self.changelog.version) | |
|
1481 | 1483 | |
|
1482 | oldheads = len(cl.heads()) | |
|
1484 | oldheads = len(cl.heads()) | |
|
1483 | 1485 | |
|
1484 | # pull off the changeset group | |
|
1485 | self.ui.status(_("adding changesets\n")) | |
|
1486 | co = cl.tip() | |
|
1487 | chunkiter = changegroup.chunkiter(source) | |
|
1488 | cn = cl.addgroup(chunkiter, csmap, tr, 1) # unique | |
|
1489 | cnr, cor = map(cl.rev, (cn, co)) | |
|
1490 | if cn == nullid: | |
|
1491 | cnr = cor | |
|
1492 | changesets = cnr - cor | |
|
1486 | # pull off the changeset group | |
|
1487 | self.ui.status(_("adding changesets\n")) | |
|
1488 | co = cl.tip() | |
|
1489 | chunkiter = changegroup.chunkiter(source) | |
|
1490 | cn = cl.addgroup(chunkiter, csmap, tr, 1) # unique | |
|
1491 | cnr, cor = map(cl.rev, (cn, co)) | |
|
1492 | if cn == nullid: | |
|
1493 | cnr = cor | |
|
1494 | changesets = cnr - cor | |
|
1493 | 1495 | |
|
1494 | mf = appendfile.appendmanifest(self.opener, self.manifest.version) | |
|
1496 | mf = None | |
|
1497 | try: | |
|
1498 | mf = appendfile.appendmanifest(self.opener, | |
|
1499 | self.manifest.version) | |
|
1495 | 1500 | |
|
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 | # 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) | |
|
1501 | 1506 | |
|
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) | |
|
1512 | n = fl.addgroup(chunkiter, revmap, tr) | |
|
1513 | revisions += fl.count() - o | |
|
1514 | files += 1 | |
|
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 | |
|
1515 | 1520 | |
|
1516 | # write order here is important so concurrent readers will see | |
|
1517 | # consistent view of repo | |
|
1518 | mf.writedata() | |
|
1519 | cl.writedata() | |
|
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 | 1532 | # make changelog and manifest see real files again |
|
1522 | 1533 | self.changelog = changelog.changelog(self.opener, self.changelog.version) |
General Comments 0
You need to be logged in to leave comments.
Login now