[PATCH 14 of 25 RFC] phases: add a repository requirement about internal phase

Boris Feld boris.feld at octobus.net
Thu Jun 7 10:11:13 EDT 2018


# HG changeset patch
# User Boris Feld <boris.feld at octobus.net>
# Date 1527148750 -7200
#      Thu May 24 09:59:10 2018 +0200
# Node ID d6ac390e2ebdf51f095168fe314dd956db09e2b9
# Parent  e7b11679c4b43c3933bda699fc387bbfd496762e
# EXP-Topic internal-phase
# Available At https://bitbucket.org/octobus/mercurial-devel/
#              hg pull https://bitbucket.org/octobus/mercurial-devel/ -r d6ac390e2ebd
phases: add a repository requirement about internal phase

For internal changeset to be properly hidden, the client version needs to
support it. So we introduce a new repository requirement that will make sure
client touching a repository that use internal phase all supports the feature.

diff --git a/mercurial/configitems.py b/mercurial/configitems.py
--- a/mercurial/configitems.py
+++ b/mercurial/configitems.py
@@ -648,6 +648,9 @@ coreconfigitem('format', 'usegeneraldelt
 coreconfigitem('format', 'usestore',
     default=True,
 )
+coreconfigitem('format', 'internal-phase',
+    default=False,
+)
 coreconfigitem('fsmonitor', 'warn_when_unused',
     default=True,
 )
diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py
--- a/mercurial/localrepo.py
+++ b/mercurial/localrepo.py
@@ -384,6 +384,7 @@ class localrepository(object):
         'relshared',
         'dotencode',
         'exp-sparse',
+        'internal-phase'
     }
     openerreqs = {
         'revlogv1',
@@ -2374,5 +2375,8 @@ def newreporequirements(repo):
         # generaldelta is implied by revlogv2.
         requirements.discard('generaldelta')
         requirements.add(REVLOGV2_REQUIREMENT)
+    # experimental config: format.internal-phase
+    if repo.ui.configbool('format', 'internal-phase'):
+        requirements.add('internal-phase')
 
     return requirements


More information about the Mercurial-devel mailing list