# HG changeset patch # User Pulkit Goyal # Date 2020-11-23 08:45:26 # Node ID 49b4ab1d9f5e3f815d1323e881556edc9bbaf491 # Parent c6a1fa42e32529124d4276f06d72f5f00df2eadf share: show warning if share is outdated while source supports share-safe Previous patches in the series and some which are already committed implements share safe functionality where config and requirements will be shared too. Rolling this feature has a problem that existing shares may never upgrade as they will never learn about the new config. To help the transition, we show a warning message if the share source supports share-safe mechanism. This provides the source repo ability to upgrade and pass on the message to shares that you should reshare and upgrade too. Differential Revision: https://phab.mercurial-scm.org/D9369 diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py --- a/mercurial/localrepo.py +++ b/mercurial/localrepo.py @@ -557,6 +557,11 @@ def makelocalrepository(baseui, path, in # NOTE: presence of SHARESAFE_REQUIREMENT imply that store requirement # is present. We never write SHARESAFE_REQUIREMENT for a repo if store # is not present, refer checkrequirementscompat() for that + # + # However, if SHARESAFE_REQUIREMENT is not present, it means that the + # repository was shared the old way. We check the share source .hg/requires + # for SHARESAFE_REQUIREMENT to detect whether the current repository needs + # to be reshared if requirementsmod.SHARESAFE_REQUIREMENT in requirements: if ( @@ -575,6 +580,15 @@ def makelocalrepository(baseui, path, in storevfs = vfsmod.vfs(hgvfs.join(b'store')) requirements |= _readrequires(storevfs, False) + elif shared: + sourcerequires = _readrequires(sharedvfs, False) + if requirementsmod.SHARESAFE_REQUIREMENT in sourcerequires: + ui.warn( + _( + b'warning: source repository supports share-safe functionality.' + b' Reshare to upgrade.\n' + ) + ) # The .hg/hgrc file may load extensions or contain config options # that influence repository construction. Attempt to load it and 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 @@ -373,6 +373,7 @@ Upgrade Make sure existing shares still works $ hg log -GT "{node}: {desc}\n" -R ../nss-share + warning: source repository supports share-safe functionality. Reshare to upgrade. @ f63db81e6dde1d9c78814167f77fb1fb49283f4f: added bar | o f3ba8b99bb6f897c87bbc1c07b75c6ddf43a4f77: added foo