Mercurial > hg > mercurial-crew-with-dirclash
comparison mercurial/localrepo.py @ 2395:8ed45fb1053a
remove appendfile for the manifest when adding a changegroup
Since the changelog is using appendfile, the manifest entries cannot
be referenced, so we don't need to use append file for the manifest.
author | Benoit Boissinot <benoit.boissinot@ens-lyon.org> |
---|---|
date | Sun, 04 Jun 2006 17:46:33 +0200 |
parents | 482d3fb47d80 |
children | 092039246d73 |
comparison
equal
deleted
inserted
replaced
2394:a8f1049d1d2d | 2395:8ed45fb1053a |
---|---|
1496 | 1496 |
1497 changesets = files = revisions = 0 | 1497 changesets = files = revisions = 0 |
1498 | 1498 |
1499 tr = self.transaction() | 1499 tr = self.transaction() |
1500 | 1500 |
1501 # write changelog and manifest data to temp files so | 1501 # write changelog data to temp files so concurrent readers will not see |
1502 # concurrent readers will not see inconsistent view | 1502 # inconsistent view |
1503 cl = None | 1503 cl = None |
1504 try: | 1504 try: |
1505 cl = appendfile.appendchangelog(self.opener, self.changelog.version) | 1505 cl = appendfile.appendchangelog(self.opener, self.changelog.version) |
1506 | 1506 |
1507 oldheads = len(cl.heads()) | 1507 oldheads = len(cl.heads()) |
1513 if cl.addgroup(chunkiter, csmap, tr, 1) is None: | 1513 if cl.addgroup(chunkiter, csmap, tr, 1) is None: |
1514 raise util.Abort(_("received changelog group is empty")) | 1514 raise util.Abort(_("received changelog group is empty")) |
1515 cnr = cl.count() - 1 | 1515 cnr = cl.count() - 1 |
1516 changesets = cnr - cor | 1516 changesets = cnr - cor |
1517 | 1517 |
1518 mf = None | 1518 # pull off the manifest group |
1519 try: | 1519 self.ui.status(_("adding manifests\n")) |
1520 mf = appendfile.appendmanifest(self.opener, | 1520 chunkiter = changegroup.chunkiter(source) |
1521 self.manifest.version) | 1521 # no need to check for empty manifest group here: |
1522 | 1522 # if the result of the merge of 1 and 2 is the same in 3 and 4, |
1523 # pull off the manifest group | 1523 # no new manifest will be created and the manifest group will |
1524 self.ui.status(_("adding manifests\n")) | 1524 # be empty during the pull |
1525 self.manifest.addgroup(chunkiter, revmap, tr) | |
1526 | |
1527 # process the files | |
1528 self.ui.status(_("adding file changes\n")) | |
1529 while 1: | |
1530 f = changegroup.getchunk(source) | |
1531 if not f: | |
1532 break | |
1533 self.ui.debug(_("adding %s revisions\n") % f) | |
1534 fl = self.file(f) | |
1535 o = fl.count() | |
1525 chunkiter = changegroup.chunkiter(source) | 1536 chunkiter = changegroup.chunkiter(source) |
1526 # no need to check for empty manifest group here: | 1537 if fl.addgroup(chunkiter, revmap, tr) is None: |
1527 # if the result of the merge of 1 and 2 is the same in 3 and 4, | 1538 raise util.Abort(_("received file revlog group is empty")) |
1528 # no new manifest will be created and the manifest group will | 1539 revisions += fl.count() - o |
1529 # be empty during the pull | 1540 files += 1 |
1530 mf.addgroup(chunkiter, revmap, tr) | 1541 |
1531 | |
1532 # process the files | |
1533 self.ui.status(_("adding file changes\n")) | |
1534 while 1: | |
1535 f = changegroup.getchunk(source) | |
1536 if not f: | |
1537 break | |
1538 self.ui.debug(_("adding %s revisions\n") % f) | |
1539 fl = self.file(f) | |
1540 o = fl.count() | |
1541 chunkiter = changegroup.chunkiter(source) | |
1542 if fl.addgroup(chunkiter, revmap, tr) is None: | |
1543 raise util.Abort(_("received file revlog group is empty")) | |
1544 revisions += fl.count() - o | |
1545 files += 1 | |
1546 | |
1547 # write order here is important so concurrent readers will see | |
1548 # consistent view of repo | |
1549 mf.writedata() | |
1550 finally: | |
1551 if mf: | |
1552 mf.cleanup() | |
1553 cl.writedata() | 1542 cl.writedata() |
1554 finally: | 1543 finally: |
1555 if cl: | 1544 if cl: |
1556 cl.cleanup() | 1545 cl.cleanup() |
1557 | 1546 |
1558 # make changelog and manifest see real files again | 1547 # make changelog see real files again |
1559 self.changelog = changelog.changelog(self.opener, self.changelog.version) | 1548 self.changelog = changelog.changelog(self.opener, self.changelog.version) |
1560 self.manifest = manifest.manifest(self.opener, self.manifest.version) | |
1561 self.changelog.checkinlinesize(tr) | 1549 self.changelog.checkinlinesize(tr) |
1562 self.manifest.checkinlinesize(tr) | |
1563 | 1550 |
1564 newheads = len(self.changelog.heads()) | 1551 newheads = len(self.changelog.heads()) |
1565 heads = "" | 1552 heads = "" |
1566 if oldheads and newheads > oldheads: | 1553 if oldheads and newheads > oldheads: |
1567 heads = _(" (+%d heads)") % (newheads - oldheads) | 1554 heads = _(" (+%d heads)") % (newheads - oldheads) |