Show More
@@ -11,7 +11,7 b' from node import *' | |||||
11 | from i18n import gettext as _ |
|
11 | from i18n import gettext as _ | |
12 | from demandload import * |
|
12 | from demandload import * | |
13 | demandload(globals(), "re lock transaction tempfile stat mdiff errno ui") |
|
13 | demandload(globals(), "re lock transaction tempfile stat mdiff errno ui") | |
14 | demandload(globals(), "changegroup") |
|
14 | demandload(globals(), "appendfile changegroup") | |
15 |
|
15 | |||
16 | class localrepository(object): |
|
16 | class localrepository(object): | |
17 | def __del__(self): |
|
17 | def __del__(self): | |
@@ -1343,10 +1343,10 b' class localrepository(object):' | |||||
1343 |
|
1343 | |||
1344 | def csmap(x): |
|
1344 | def csmap(x): | |
1345 | self.ui.debug(_("add changeset %s\n") % short(x)) |
|
1345 | self.ui.debug(_("add changeset %s\n") % short(x)) | |
1346 |
return |
|
1346 | return cl.count() | |
1347 |
|
1347 | |||
1348 | def revmap(x): |
|
1348 | def revmap(x): | |
1349 |
return |
|
1349 | return cl.rev(x) | |
1350 |
|
1350 | |||
1351 | if not source: |
|
1351 | if not source: | |
1352 | return |
|
1352 | return | |
@@ -1357,23 +1357,29 b' class localrepository(object):' | |||||
1357 |
|
1357 | |||
1358 | tr = self.transaction() |
|
1358 | tr = self.transaction() | |
1359 |
|
1359 | |||
1360 | oldheads = len(self.changelog.heads()) |
|
1360 | # write changelog and manifest data to temp files so | |
|
1361 | # concurrent readers will not see inconsistent view | |||
|
1362 | cl = appendfile.appendchangelog(self.opener) | |||
|
1363 | ||||
|
1364 | oldheads = len(cl.heads()) | |||
1361 |
|
1365 | |||
1362 | # pull off the changeset group |
|
1366 | # pull off the changeset group | |
1363 | self.ui.status(_("adding changesets\n")) |
|
1367 | self.ui.status(_("adding changesets\n")) | |
1364 |
co = |
|
1368 | co = cl.tip() | |
1365 | chunkiter = changegroup.chunkiter(source) |
|
1369 | chunkiter = changegroup.chunkiter(source) | |
1366 |
cn = |
|
1370 | cn = cl.addgroup(chunkiter, csmap, tr, 1) # unique | |
1367 |
cnr, cor = map( |
|
1371 | cnr, cor = map(cl.rev, (cn, co)) | |
1368 | if cn == nullid: |
|
1372 | if cn == nullid: | |
1369 | cnr = cor |
|
1373 | cnr = cor | |
1370 | changesets = cnr - cor |
|
1374 | changesets = cnr - cor | |
1371 |
|
1375 | |||
|
1376 | mf = appendfile.appendmanifest(self.opener) | |||
|
1377 | ||||
1372 | # pull off the manifest group |
|
1378 | # pull off the manifest group | |
1373 | self.ui.status(_("adding manifests\n")) |
|
1379 | self.ui.status(_("adding manifests\n")) | |
1374 |
mm = |
|
1380 | mm = mf.tip() | |
1375 | chunkiter = changegroup.chunkiter(source) |
|
1381 | chunkiter = changegroup.chunkiter(source) | |
1376 |
mo = |
|
1382 | mo = mf.addgroup(chunkiter, revmap, tr) | |
1377 |
|
1383 | |||
1378 | # process the files |
|
1384 | # process the files | |
1379 | self.ui.status(_("adding file changes\n")) |
|
1385 | self.ui.status(_("adding file changes\n")) | |
@@ -1389,6 +1395,15 b' class localrepository(object):' | |||||
1389 | revisions += fl.count() - o |
|
1395 | revisions += fl.count() - o | |
1390 | files += 1 |
|
1396 | files += 1 | |
1391 |
|
1397 | |||
|
1398 | # write order here is important so concurrent readers will see | |||
|
1399 | # consistent view of repo | |||
|
1400 | mf.writedata() | |||
|
1401 | cl.writedata() | |||
|
1402 | ||||
|
1403 | # make changelog and manifest see real files again | |||
|
1404 | self.changelog = changelog.changelog(self.opener) | |||
|
1405 | self.manifest = manifest.manifest(self.opener) | |||
|
1406 | ||||
1392 | newheads = len(self.changelog.heads()) |
|
1407 | newheads = len(self.changelog.heads()) | |
1393 | heads = "" |
|
1408 | heads = "" | |
1394 | if oldheads and newheads > oldheads: |
|
1409 | if oldheads and newheads > oldheads: |
General Comments 0
You need to be logged in to leave comments.
Login now