# HG changeset patch # User Pulkit Goyal <7895pulkit@gmail.com> # Date 2021-01-08 16:17:31 # Node ID d159d0fafa78eee8c7f6ac8a3693e9baa548ee4f # Parent 9796cf108e4eac4f6853daaaad87521067750fcc sharesafe: introduce config to disallow outdated shares if upgrade fails After this patch, we have config option to control all aspects of shares when share source is upgraded or downgraded. Differential Revision: https://phab.mercurial-scm.org/D9692 diff --git a/mercurial/configitems.py b/mercurial/configitems.py --- a/mercurial/configitems.py +++ b/mercurial/configitems.py @@ -1084,6 +1084,11 @@ coreconfigitem( ) coreconfigitem( b'experimental', + b'sharesafe-auto-upgrade-fail-error', + default=False, +) +coreconfigitem( + b'experimental', b'sharesafe-warn-outdated-shares', default=True, ) diff --git a/mercurial/upgrade.py b/mercurial/upgrade.py --- a/mercurial/upgrade.py +++ b/mercurial/upgrade.py @@ -257,7 +257,12 @@ def upgrade_share_to_safe(ui, hgvfs, sto current_requirements.add(requirementsmod.SHARESAFE_REQUIREMENT) ui.warn(_(b'repository upgraded to use share-safe mode\n')) except error.LockError as e: - if ui.configbool(b'experimental', b'sharesafe-warn-outdated-shares'): + if ui.configbool(b'experimental', b'sharesafe-auto-upgrade-fail-error'): + raise error.Abort( + _(b'failed to upgrade share, got error: %s') + % stringutil.forcebytestr(e.strerror) + ) + elif ui.configbool(b'experimental', b'sharesafe-warn-outdated-shares'): ui.warn( _(b'failed to upgrade share, got error: %s\n') % stringutil.forcebytestr(e.strerror) 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 @@ -557,6 +557,10 @@ Check that if lock is taken, upgrade fai o f3ba8b99bb6f897c87bbc1c07b75c6ddf43a4f77: added foo + $ hg log -GT "{node}: {desc}\n" -R ../nss-share --config experimental.sharesafe-auto-upgrade-shares=true --config experimental.sharesafe-auto-upgrade-fail-error=true + abort: failed to upgrade share, got error: Lock held + [255] + $ rm ../nss-share/.hg/wlock $ hg log -GT "{node}: {desc}\n" -R ../nss-share --config experimental.sharesafe-auto-upgrade-shares=true repository upgraded to use share-safe mode