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

login
register
mail settings
Submitter Boris Feld
Date June 7, 2018, 2:11 p.m.
Message ID <d6ac390e2ebdf51f0951.1528380673@Laptop-Boris.lan>
Download mbox | patch
Permalink /patch/32008/
State Accepted
Headers show

Comments

Boris Feld - June 7, 2018, 2:11 p.m.
# HG changeset patch
# User Boris Feld <boris.feld@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.

Patch

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