# HG changeset patch # User Pulkit Goyal # Date 1606121126 -19800 # 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 -r c6a1fa42e325 -r 49b4ab1d9f5e mercurial/localrepo.py --- a/mercurial/localrepo.py Fri Oct 16 18:57:55 2020 +0530 +++ b/mercurial/localrepo.py Mon Nov 23 14:15:26 2020 +0530 @@ -557,6 +557,11 @@ # 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 @@ 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 -r c6a1fa42e325 -r 49b4ab1d9f5e tests/test-share-safe.t --- a/tests/test-share-safe.t Fri Oct 16 18:57:55 2020 +0530 +++ b/tests/test-share-safe.t Mon Nov 23 14:15:26 2020 +0530 @@ -373,6 +373,7 @@ 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