# HG changeset patch # User Pulkit Goyal <7895pulkit@gmail.com> # Date 2021-01-14 11:07:10 # Node ID f2c4224e66483512d48997485114bf5c8a7e1080 # Parent ee9002b9959566290a263493c409fcf7406df2b3 upgrade: update only requirements if we can Upgrade operations which involves just upgrading requirements earlier used to go through whole revlog cloning business. Now we just upgrade the requirement and skip the cloning part. Differential Revision: https://phab.mercurial-scm.org/D9775 diff --git a/mercurial/upgrade_utils/engine.py b/mercurial/upgrade_utils/engine.py --- a/mercurial/upgrade_utils/engine.py +++ b/mercurial/upgrade_utils/engine.py @@ -449,7 +449,7 @@ def upgrade(ui, srcrepo, dstrepo, upgrad ) ) - if True: + if not upgrade_op.requirements_only: with dstrepo.transaction(b'upgrade') as tr: _clonerevlogs( ui, @@ -533,6 +533,7 @@ def upgrade(ui, srcrepo, dstrepo, upgrad # location. This is simpler. backupvfs.unlink(b'store/lock') else: - pass + ui.status(_(b'upgrading repository requirements\n')) + scmutil.writereporequirements(srcrepo, upgrade_op.new_requirements) return backuppath diff --git a/tests/test-share-safe.t b/tests/test-share-safe.t --- a/tests/test-share-safe.t +++ b/tests/test-share-safe.t @@ -371,26 +371,8 @@ Upgrade repository locked and read-only creating temporary repository to stage upgraded data: $TESTTMP/non-share-safe/.hg/upgrade.* (glob) (it is safe to interrupt this process any time before data migration completes) - migrating 6 total revisions (2 in filelogs, 2 in manifests, 2 in changelog) - migrating 626 bytes in store; 271 bytes tracked data - migrating 2 filelogs containing 2 revisions (138 bytes in store; 8 bytes tracked data) - finished migrating 2 filelog revisions across 2 filelogs; change in size: 0 bytes - migrating 1 manifests containing 2 revisions (230 bytes in store; 135 bytes tracked data) - finished migrating 2 manifest revisions across 1 manifests; change in size: 0 bytes - migrating changelog containing 2 revisions (258 bytes in store; 128 bytes tracked data) - finished migrating 2 changelog revisions; change in size: 0 bytes - finished migrating 6 total revisions; total change in store size: 0 bytes - copying phaseroots - data fully upgraded in a temporary repository - marking source repository as being upgraded; clients will be unable to read from repository - starting in-place swap of repository data - replaced files will be backed up at $TESTTMP/non-share-safe/.hg/upgradebackup.* (glob) - replacing store... - store replacement complete; repository was inconsistent for *s (glob) - finalizing requirements file and making repository readable again + upgrading repository requirements removing temporary repository $TESTTMP/non-share-safe/.hg/upgrade.* (glob) - copy of old repository backed up at $TESTTMP/non-share-safe/.hg/upgradebackup.* (glob) - the old repository will not be deleted; remove it to free up disk space once the upgraded repository is verified repository upgraded to share safe mode, existing shares will still work in old non-safe mode. Re-share existing shares to use them in safe mode New shares will be created in safe mode. $ hg debugrequirements @@ -475,27 +457,8 @@ Test that downgrading works too repository locked and read-only creating temporary repository to stage upgraded data: $TESTTMP/non-share-safe/.hg/upgrade.* (glob) (it is safe to interrupt this process any time before data migration completes) - migrating 6 total revisions (2 in filelogs, 2 in manifests, 2 in changelog) - migrating 626 bytes in store; 271 bytes tracked data - migrating 2 filelogs containing 2 revisions (138 bytes in store; 8 bytes tracked data) - finished migrating 2 filelog revisions across 2 filelogs; change in size: 0 bytes - migrating 1 manifests containing 2 revisions (230 bytes in store; 135 bytes tracked data) - finished migrating 2 manifest revisions across 1 manifests; change in size: 0 bytes - migrating changelog containing 2 revisions (258 bytes in store; 128 bytes tracked data) - finished migrating 2 changelog revisions; change in size: 0 bytes - finished migrating 6 total revisions; total change in store size: 0 bytes - copying phaseroots - copying requires - data fully upgraded in a temporary repository - marking source repository as being upgraded; clients will be unable to read from repository - starting in-place swap of repository data - replaced files will be backed up at $TESTTMP/non-share-safe/.hg/upgradebackup.* (glob) - replacing store... - store replacement complete; repository was inconsistent for *s (glob) - finalizing requirements file and making repository readable again + upgrading repository requirements removing temporary repository $TESTTMP/non-share-safe/.hg/upgrade.* (glob) - copy of old repository backed up at $TESTTMP/non-share-safe/.hg/upgradebackup.* (glob) - the old repository will not be deleted; remove it to free up disk space once the upgraded repository is verified repository downgraded to not use share safe mode, existing shares will not work and needs to be reshared. $ hg debugrequirements