comparison mercurial/upgrade_utils/engine.py @ 46451:ee9002b99595

engine: add `if True` to prepare for next patch This will help making next patch easier to read. Differential Revision: https://phab.mercurial-scm.org/D9774
author Pulkit Goyal <7895pulkit@gmail.com>
date Thu, 14 Jan 2021 16:34:58 +0530
parents 2e8a844d0ae0
children f2c4224e6648
comparison
equal deleted inserted replaced
46450:8b02f132adf6 46451:ee9002b99595
447 b'(it is safe to interrupt this process any time before ' 447 b'(it is safe to interrupt this process any time before '
448 b'data migration completes)\n' 448 b'data migration completes)\n'
449 ) 449 )
450 ) 450 )
451 451
452 with dstrepo.transaction(b'upgrade') as tr: 452 if True:
453 _clonerevlogs( 453 with dstrepo.transaction(b'upgrade') as tr:
454 ui, 454 _clonerevlogs(
455 srcrepo, 455 ui,
456 dstrepo, 456 srcrepo,
457 tr, 457 dstrepo,
458 upgrade_op, 458 tr,
459 ) 459 upgrade_op,
460 460 )
461 # Now copy other files in the store directory. 461
462 for p in _files_to_copy_post_revlog_clone(srcrepo): 462 # Now copy other files in the store directory.
463 srcrepo.ui.status(_(b'copying %s\n') % p) 463 for p in _files_to_copy_post_revlog_clone(srcrepo):
464 src = srcrepo.store.rawvfs.join(p) 464 srcrepo.ui.status(_(b'copying %s\n') % p)
465 dst = dstrepo.store.rawvfs.join(p) 465 src = srcrepo.store.rawvfs.join(p)
466 util.copyfile(src, dst, copystat=True) 466 dst = dstrepo.store.rawvfs.join(p)
467 467 util.copyfile(src, dst, copystat=True)
468 finishdatamigration(ui, srcrepo, dstrepo, requirements) 468
469 469 finishdatamigration(ui, srcrepo, dstrepo, requirements)
470 ui.status(_(b'data fully upgraded in a temporary repository\n')) 470
471 471 ui.status(_(b'data fully upgraded in a temporary repository\n'))
472 if upgrade_op.backup_store: 472
473 backuppath = pycompat.mkdtemp( 473 if upgrade_op.backup_store:
474 prefix=b'upgradebackup.', dir=srcrepo.path 474 backuppath = pycompat.mkdtemp(
475 ) 475 prefix=b'upgradebackup.', dir=srcrepo.path
476 backupvfs = vfsmod.vfs(backuppath) 476 )
477 477 backupvfs = vfsmod.vfs(backuppath)
478 # Make a backup of requires file first, as it is the first to be modified. 478
479 util.copyfile( 479 # Make a backup of requires file first, as it is the first to be modified.
480 srcrepo.vfs.join(b'requires'), backupvfs.join(b'requires') 480 util.copyfile(
481 ) 481 srcrepo.vfs.join(b'requires'), backupvfs.join(b'requires')
482 482 )
483 # We install an arbitrary requirement that clients must not support 483
484 # as a mechanism to lock out new clients during the data swap. This is 484 # We install an arbitrary requirement that clients must not support
485 # better than allowing a client to continue while the repository is in 485 # as a mechanism to lock out new clients during the data swap. This is
486 # an inconsistent state. 486 # better than allowing a client to continue while the repository is in
487 ui.status( 487 # an inconsistent state.
488 _( 488 ui.status(
489 b'marking source repository as being upgraded; clients will be ' 489 _(
490 b'unable to read from repository\n' 490 b'marking source repository as being upgraded; clients will be '
491 ) 491 b'unable to read from repository\n'
492 ) 492 )
493 scmutil.writereporequirements( 493 )
494 srcrepo, srcrepo.requirements | {b'upgradeinprogress'} 494 scmutil.writereporequirements(
495 ) 495 srcrepo, srcrepo.requirements | {b'upgradeinprogress'}
496 496 )
497 ui.status(_(b'starting in-place swap of repository data\n')) 497
498 if upgrade_op.backup_store: 498 ui.status(_(b'starting in-place swap of repository data\n'))
499 ui.status(_(b'replaced files will be backed up at %s\n') % backuppath) 499 if upgrade_op.backup_store:
500 500 ui.status(
501 # Now swap in the new store directory. Doing it as a rename should make 501 _(b'replaced files will be backed up at %s\n') % backuppath
502 # the operation nearly instantaneous and atomic (at least in well-behaved 502 )
503 # environments). 503
504 ui.status(_(b'replacing store...\n')) 504 # Now swap in the new store directory. Doing it as a rename should make
505 tstart = util.timer() 505 # the operation nearly instantaneous and atomic (at least in well-behaved
506 _replacestores(srcrepo, dstrepo, backupvfs, upgrade_op) 506 # environments).
507 elapsed = util.timer() - tstart 507 ui.status(_(b'replacing store...\n'))
508 ui.status( 508 tstart = util.timer()
509 _( 509 _replacestores(srcrepo, dstrepo, backupvfs, upgrade_op)
510 b'store replacement complete; repository was inconsistent for ' 510 elapsed = util.timer() - tstart
511 b'%0.1fs\n' 511 ui.status(
512 ) 512 _(
513 % elapsed 513 b'store replacement complete; repository was inconsistent for '
514 ) 514 b'%0.1fs\n'
515 515 )
516 # We first write the requirements file. Any new requirements will lock 516 % elapsed
517 # out legacy clients. 517 )
518 ui.status( 518
519 _( 519 # We first write the requirements file. Any new requirements will lock
520 b'finalizing requirements file and making repository readable ' 520 # out legacy clients.
521 b'again\n' 521 ui.status(
522 ) 522 _(
523 ) 523 b'finalizing requirements file and making repository readable '
524 scmutil.writereporequirements(srcrepo, upgrade_op.new_requirements) 524 b'again\n'
525 525 )
526 if upgrade_op.backup_store: 526 )
527 # The lock file from the old store won't be removed because nothing has a 527 scmutil.writereporequirements(srcrepo, upgrade_op.new_requirements)
528 # reference to its new location. So clean it up manually. Alternatively, we 528
529 # could update srcrepo.svfs and other variables to point to the new 529 if upgrade_op.backup_store:
530 # location. This is simpler. 530 # The lock file from the old store won't be removed because nothing has a
531 backupvfs.unlink(b'store/lock') 531 # reference to its new location. So clean it up manually. Alternatively, we
532 # could update srcrepo.svfs and other variables to point to the new
533 # location. This is simpler.
534 backupvfs.unlink(b'store/lock')
535 else:
536 pass
532 537
533 return backuppath 538 return backuppath