mercurial/configitems.py
changeset 50762 c51b178b0b7e
parent 50760 b584dae08774
child 50765 7f8f6fe13fa9
equal deleted inserted replaced
50761:2c34c9b61a4f 50762:c51b178b0b7e
     7 
     7 
     8 
     8 
     9 import functools
     9 import functools
    10 import re
    10 import re
    11 
    11 
       
    12 from .utils import resourceutil
       
    13 
    12 from . import (
    14 from . import (
    13     encoding,
    15     encoding,
    14     error,
    16     error,
    15 )
    17 )
       
    18 
       
    19 try:
       
    20     import tomllib  # pytype: disable=import-error
       
    21 
       
    22     tomllib.load  # trigger lazy import
       
    23 except ModuleNotFoundError:
       
    24     # Python <3.11 compat
       
    25     from .thirdparty import tomli as tomllib
    16 
    26 
    17 
    27 
    18 def loadconfigtable(ui, extname, configtable):
    28 def loadconfigtable(ui, extname, configtable):
    19     """update config item known to the ui with the extension ones"""
    29     """update config item known to the ui with the extension ones"""
    20     for section, items in sorted(configtable.items()):
    30     for section, items in sorted(configtable.items()):
   102                 return item
   112                 return item
   103 
   113 
   104         return None
   114         return None
   105 
   115 
   106 
   116 
       
   117 def sanitize_item(item):
       
   118     """Apply the transformations that are encoded on top of the pure data"""
       
   119 
       
   120     # Set the special defaults
       
   121     default_type_key = "default-type"
       
   122     default_type = item.pop(default_type_key, None)
       
   123     if default_type == "dynamic":
       
   124         item["default"] = dynamicdefault
       
   125     elif default_type == "list_type":
       
   126         item["default"] = list
       
   127     elif default_type == "lambda":
       
   128         assert isinstance(item["default"], list)
       
   129         default = [e.encode() for e in item["default"]]
       
   130         item["default"] = lambda: default
       
   131     elif default_type == "lazy_module":
       
   132         item["default"] = lambda: encoding.encoding
       
   133     else:
       
   134         if default_type is not None:
       
   135             msg = "invalid default config type %r for '%s.%s'"
       
   136             msg %= (default_type, item["section"], item["name"])
       
   137             raise error.ProgrammingError(msg)
       
   138 
       
   139     # config expects bytes
       
   140     alias = item.get("alias")
       
   141     if alias:
       
   142         item["alias"] = [(k.encode(), v.encode()) for (k, v) in alias]
       
   143     if isinstance(item.get("default"), str):
       
   144         item["default"] = item["default"].encode()
       
   145     item["section"] = item["section"].encode()
       
   146     item["name"] = item["name"].encode()
       
   147 
       
   148 
       
   149 def read_configitems_file():
       
   150     """Returns the deserialized TOML structure from the configitems file"""
       
   151     with resourceutil.open_resource(b"mercurial", b"configitems.toml") as fp:
       
   152         return tomllib.load(fp)
       
   153 
       
   154 
       
   155 def configitems_from_toml(items):
       
   156     """Register the configitems from the *deserialized* toml file"""
       
   157     for item in items["items"]:
       
   158         sanitize_item(item)
       
   159         coreconfigitem(**item)
       
   160 
       
   161     templates = items["templates"]
       
   162 
       
   163     for application in items["template-applications"]:
       
   164         template_items = templates[application["template"]]
       
   165 
       
   166         for template_item in template_items:
       
   167             item = template_item.copy()
       
   168             prefix = application.get("prefix", "")
       
   169             item["section"] = application["section"]
       
   170             if prefix:
       
   171                 item["name"] = f'{prefix}.{item["suffix"]}'
       
   172             else:
       
   173                 item["name"] = item["suffix"]
       
   174 
       
   175             sanitize_item(item)
       
   176             item.pop("suffix", None)
       
   177             coreconfigitem(**item)
       
   178 
       
   179 
       
   180 def import_configitems_from_file():
       
   181     as_toml = read_configitems_file()
       
   182     configitems_from_toml(as_toml)
       
   183 
       
   184 
   107 coreitems = {}
   185 coreitems = {}
   108 
   186 
   109 
   187 
   110 def _register(configtable, *args, **kwargs):
   188 def _register(configtable, *args, **kwargs):
   111     item = configitem(*args, **kwargs)
   189     item = configitem(*args, **kwargs)
   129     return f
   207     return f
   130 
   208 
   131 
   209 
   132 coreconfigitem = getitemregister(coreitems)
   210 coreconfigitem = getitemregister(coreitems)
   133 
   211 
   134 
   212 import_configitems_from_file()
   135 def _registerdiffopts(section, configprefix=b''):
       
   136     coreconfigitem(
       
   137         section,
       
   138         configprefix + b'nodates',
       
   139         default=False,
       
   140     )
       
   141     coreconfigitem(
       
   142         section,
       
   143         configprefix + b'showfunc',
       
   144         default=False,
       
   145     )
       
   146     coreconfigitem(
       
   147         section,
       
   148         configprefix + b'unified',
       
   149         default=None,
       
   150     )
       
   151     coreconfigitem(
       
   152         section,
       
   153         configprefix + b'git',
       
   154         default=False,
       
   155     )
       
   156     coreconfigitem(
       
   157         section,
       
   158         configprefix + b'ignorews',
       
   159         default=False,
       
   160     )
       
   161     coreconfigitem(
       
   162         section,
       
   163         configprefix + b'ignorewsamount',
       
   164         default=False,
       
   165     )
       
   166     coreconfigitem(
       
   167         section,
       
   168         configprefix + b'ignoreblanklines',
       
   169         default=False,
       
   170     )
       
   171     coreconfigitem(
       
   172         section,
       
   173         configprefix + b'ignorewseol',
       
   174         default=False,
       
   175     )
       
   176     coreconfigitem(
       
   177         section,
       
   178         configprefix + b'nobinary',
       
   179         default=False,
       
   180     )
       
   181     coreconfigitem(
       
   182         section,
       
   183         configprefix + b'noprefix',
       
   184         default=False,
       
   185     )
       
   186     coreconfigitem(
       
   187         section,
       
   188         configprefix + b'word-diff',
       
   189         default=False,
       
   190     )
       
   191 
       
   192 
       
   193 coreconfigitem(
       
   194     b'alias',
       
   195     b'.*',
       
   196     default=dynamicdefault,
       
   197     generic=True,
       
   198 )
       
   199 coreconfigitem(
       
   200     b'auth',
       
   201     b'cookiefile',
       
   202     default=None,
       
   203 )
       
   204 _registerdiffopts(section=b'annotate')
       
   205 # bookmarks.pushing: internal hack for discovery
       
   206 coreconfigitem(
       
   207     b'bookmarks',
       
   208     b'pushing',
       
   209     default=list,
       
   210 )
       
   211 # bundle.mainreporoot: internal hack for bundlerepo
       
   212 coreconfigitem(
       
   213     b'bundle',
       
   214     b'mainreporoot',
       
   215     default=b'',
       
   216 )
       
   217 coreconfigitem(
       
   218     b'censor',
       
   219     b'policy',
       
   220     default=b'abort',
       
   221     experimental=True,
       
   222 )
       
   223 coreconfigitem(
       
   224     b'chgserver',
       
   225     b'idletimeout',
       
   226     default=3600,
       
   227 )
       
   228 coreconfigitem(
       
   229     b'chgserver',
       
   230     b'skiphash',
       
   231     default=False,
       
   232 )
       
   233 coreconfigitem(
       
   234     b'cmdserver',
       
   235     b'log',
       
   236     default=None,
       
   237 )
       
   238 coreconfigitem(
       
   239     b'cmdserver',
       
   240     b'max-log-files',
       
   241     default=7,
       
   242 )
       
   243 coreconfigitem(
       
   244     b'cmdserver',
       
   245     b'max-log-size',
       
   246     default=b'1 MB',
       
   247 )
       
   248 coreconfigitem(
       
   249     b'cmdserver',
       
   250     b'max-repo-cache',
       
   251     default=0,
       
   252     experimental=True,
       
   253 )
       
   254 coreconfigitem(
       
   255     b'cmdserver',
       
   256     b'message-encodings',
       
   257     default=list,
       
   258 )
       
   259 coreconfigitem(
       
   260     b'cmdserver',
       
   261     b'track-log',
       
   262     default=lambda: [b'chgserver', b'cmdserver', b'repocache'],
       
   263 )
       
   264 coreconfigitem(
       
   265     b'cmdserver',
       
   266     b'shutdown-on-interrupt',
       
   267     default=True,
       
   268 )
       
   269 coreconfigitem(
       
   270     b'color',
       
   271     b'.*',
       
   272     default=None,
       
   273     generic=True,
       
   274 )
       
   275 coreconfigitem(
       
   276     b'color',
       
   277     b'mode',
       
   278     default=b'auto',
       
   279 )
       
   280 coreconfigitem(
       
   281     b'color',
       
   282     b'pagermode',
       
   283     default=dynamicdefault,
       
   284 )
       
   285 coreconfigitem(
       
   286     b'command-templates',
       
   287     b'graphnode',
       
   288     default=None,
       
   289     alias=[(b'ui', b'graphnodetemplate')],
       
   290 )
       
   291 coreconfigitem(
       
   292     b'command-templates',
       
   293     b'log',
       
   294     default=None,
       
   295     alias=[(b'ui', b'logtemplate')],
       
   296 )
       
   297 coreconfigitem(
       
   298     b'command-templates',
       
   299     b'mergemarker',
       
   300     default=(
       
   301         b'{node|short} '
       
   302         b'{ifeq(tags, "tip", "", '
       
   303         b'ifeq(tags, "", "", "{tags} "))}'
       
   304         b'{if(bookmarks, "{bookmarks} ")}'
       
   305         b'{ifeq(branch, "default", "", "{branch} ")}'
       
   306         b'- {author|user}: {desc|firstline}'
       
   307     ),
       
   308     alias=[(b'ui', b'mergemarkertemplate')],
       
   309 )
       
   310 coreconfigitem(
       
   311     b'command-templates',
       
   312     b'pre-merge-tool-output',
       
   313     default=None,
       
   314     alias=[(b'ui', b'pre-merge-tool-output-template')],
       
   315 )
       
   316 coreconfigitem(
       
   317     b'command-templates',
       
   318     b'oneline-summary',
       
   319     default=None,
       
   320 )
       
   321 coreconfigitem(
       
   322     b'command-templates',
       
   323     b'oneline-summary.*',
       
   324     default=dynamicdefault,
       
   325     generic=True,
       
   326 )
       
   327 _registerdiffopts(section=b'commands', configprefix=b'commit.interactive.')
       
   328 coreconfigitem(
       
   329     b'commands',
       
   330     b'commit.post-status',
       
   331     default=False,
       
   332 )
       
   333 coreconfigitem(
       
   334     b'commands',
       
   335     b'grep.all-files',
       
   336     default=False,
       
   337     experimental=True,
       
   338 )
       
   339 coreconfigitem(
       
   340     b'commands',
       
   341     b'merge.require-rev',
       
   342     default=False,
       
   343 )
       
   344 coreconfigitem(
       
   345     b'commands',
       
   346     b'push.require-revs',
       
   347     default=False,
       
   348 )
       
   349 coreconfigitem(
       
   350     b'commands',
       
   351     b'resolve.confirm',
       
   352     default=False,
       
   353 )
       
   354 coreconfigitem(
       
   355     b'commands',
       
   356     b'resolve.explicit-re-merge',
       
   357     default=False,
       
   358 )
       
   359 coreconfigitem(
       
   360     b'commands',
       
   361     b'resolve.mark-check',
       
   362     default=b'none',
       
   363 )
       
   364 _registerdiffopts(section=b'commands', configprefix=b'revert.interactive.')
       
   365 coreconfigitem(
       
   366     b'commands',
       
   367     b'show.aliasprefix',
       
   368     default=list,
       
   369 )
       
   370 coreconfigitem(
       
   371     b'commands',
       
   372     b'status.relative',
       
   373     default=False,
       
   374 )
       
   375 coreconfigitem(
       
   376     b'commands',
       
   377     b'status.skipstates',
       
   378     default=[],
       
   379     experimental=True,
       
   380 )
       
   381 coreconfigitem(
       
   382     b'commands',
       
   383     b'status.terse',
       
   384     default=b'',
       
   385 )
       
   386 coreconfigitem(
       
   387     b'commands',
       
   388     b'status.verbose',
       
   389     default=False,
       
   390 )
       
   391 coreconfigitem(
       
   392     b'commands',
       
   393     b'update.check',
       
   394     default=None,
       
   395 )
       
   396 coreconfigitem(
       
   397     b'commands',
       
   398     b'update.requiredest',
       
   399     default=False,
       
   400 )
       
   401 coreconfigitem(
       
   402     b'committemplate',
       
   403     b'.*',
       
   404     default=None,
       
   405     generic=True,
       
   406 )
       
   407 coreconfigitem(
       
   408     b'convert',
       
   409     b'bzr.saverev',
       
   410     default=True,
       
   411 )
       
   412 coreconfigitem(
       
   413     b'convert',
       
   414     b'cvsps.cache',
       
   415     default=True,
       
   416 )
       
   417 coreconfigitem(
       
   418     b'convert',
       
   419     b'cvsps.fuzz',
       
   420     default=60,
       
   421 )
       
   422 coreconfigitem(
       
   423     b'convert',
       
   424     b'cvsps.logencoding',
       
   425     default=None,
       
   426 )
       
   427 coreconfigitem(
       
   428     b'convert',
       
   429     b'cvsps.mergefrom',
       
   430     default=None,
       
   431 )
       
   432 coreconfigitem(
       
   433     b'convert',
       
   434     b'cvsps.mergeto',
       
   435     default=None,
       
   436 )
       
   437 coreconfigitem(
       
   438     b'convert',
       
   439     b'git.committeractions',
       
   440     default=lambda: [b'messagedifferent'],
       
   441 )
       
   442 coreconfigitem(
       
   443     b'convert',
       
   444     b'git.extrakeys',
       
   445     default=list,
       
   446 )
       
   447 coreconfigitem(
       
   448     b'convert',
       
   449     b'git.findcopiesharder',
       
   450     default=False,
       
   451 )
       
   452 coreconfigitem(
       
   453     b'convert',
       
   454     b'git.remoteprefix',
       
   455     default=b'remote',
       
   456 )
       
   457 coreconfigitem(
       
   458     b'convert',
       
   459     b'git.renamelimit',
       
   460     default=400,
       
   461 )
       
   462 coreconfigitem(
       
   463     b'convert',
       
   464     b'git.saverev',
       
   465     default=True,
       
   466 )
       
   467 coreconfigitem(
       
   468     b'convert',
       
   469     b'git.similarity',
       
   470     default=50,
       
   471 )
       
   472 coreconfigitem(
       
   473     b'convert',
       
   474     b'git.skipsubmodules',
       
   475     default=False,
       
   476 )
       
   477 coreconfigitem(
       
   478     b'convert',
       
   479     b'hg.clonebranches',
       
   480     default=False,
       
   481 )
       
   482 coreconfigitem(
       
   483     b'convert',
       
   484     b'hg.ignoreerrors',
       
   485     default=False,
       
   486 )
       
   487 coreconfigitem(
       
   488     b'convert',
       
   489     b'hg.preserve-hash',
       
   490     default=False,
       
   491 )
       
   492 coreconfigitem(
       
   493     b'convert',
       
   494     b'hg.revs',
       
   495     default=None,
       
   496 )
       
   497 coreconfigitem(
       
   498     b'convert',
       
   499     b'hg.saverev',
       
   500     default=False,
       
   501 )
       
   502 coreconfigitem(
       
   503     b'convert',
       
   504     b'hg.sourcename',
       
   505     default=None,
       
   506 )
       
   507 coreconfigitem(
       
   508     b'convert',
       
   509     b'hg.startrev',
       
   510     default=None,
       
   511 )
       
   512 coreconfigitem(
       
   513     b'convert',
       
   514     b'hg.tagsbranch',
       
   515     default=b'default',
       
   516 )
       
   517 coreconfigitem(
       
   518     b'convert',
       
   519     b'hg.usebranchnames',
       
   520     default=True,
       
   521 )
       
   522 coreconfigitem(
       
   523     b'convert',
       
   524     b'ignoreancestorcheck',
       
   525     default=False,
       
   526     experimental=True,
       
   527 )
       
   528 coreconfigitem(
       
   529     b'convert',
       
   530     b'localtimezone',
       
   531     default=False,
       
   532 )
       
   533 coreconfigitem(
       
   534     b'convert',
       
   535     b'p4.encoding',
       
   536     default=dynamicdefault,
       
   537 )
       
   538 coreconfigitem(
       
   539     b'convert',
       
   540     b'p4.startrev',
       
   541     default=0,
       
   542 )
       
   543 coreconfigitem(
       
   544     b'convert',
       
   545     b'skiptags',
       
   546     default=False,
       
   547 )
       
   548 coreconfigitem(
       
   549     b'convert',
       
   550     b'svn.debugsvnlog',
       
   551     default=True,
       
   552 )
       
   553 coreconfigitem(
       
   554     b'convert',
       
   555     b'svn.trunk',
       
   556     default=None,
       
   557 )
       
   558 coreconfigitem(
       
   559     b'convert',
       
   560     b'svn.tags',
       
   561     default=None,
       
   562 )
       
   563 coreconfigitem(
       
   564     b'convert',
       
   565     b'svn.branches',
       
   566     default=None,
       
   567 )
       
   568 coreconfigitem(
       
   569     b'convert',
       
   570     b'svn.startrev',
       
   571     default=0,
       
   572 )
       
   573 coreconfigitem(
       
   574     b'convert',
       
   575     b'svn.dangerous-set-commit-dates',
       
   576     default=False,
       
   577 )
       
   578 coreconfigitem(
       
   579     b'debug',
       
   580     b'dirstate.delaywrite',
       
   581     default=0,
       
   582 )
       
   583 coreconfigitem(
       
   584     b'debug',
       
   585     b'revlog.verifyposition.changelog',
       
   586     default=b'',
       
   587 )
       
   588 coreconfigitem(
       
   589     b'debug',
       
   590     b'revlog.debug-delta',
       
   591     default=False,
       
   592 )
       
   593 # display extra information about the bundling process
       
   594 coreconfigitem(
       
   595     b'debug',
       
   596     b'bundling-stats',
       
   597     default=False,
       
   598 )
       
   599 # display extra information about the unbundling process
       
   600 coreconfigitem(
       
   601     b'debug',
       
   602     b'unbundling-stats',
       
   603     default=False,
       
   604 )
       
   605 coreconfigitem(
       
   606     b'defaults',
       
   607     b'.*',
       
   608     default=None,
       
   609     generic=True,
       
   610 )
       
   611 coreconfigitem(
       
   612     b'devel',
       
   613     b'all-warnings',
       
   614     default=False,
       
   615 )
       
   616 coreconfigitem(
       
   617     b'devel',
       
   618     b'bundle2.debug',
       
   619     default=False,
       
   620 )
       
   621 # which kind of delta to put in the bundled changegroup. Possible value
       
   622 # - '': use default behavior
       
   623 # - p1: force to always use delta against p1
       
   624 # - full: force to always use full content
       
   625 coreconfigitem(
       
   626     b'devel',
       
   627     b'bundle.delta',
       
   628     default=b'',
       
   629 )
       
   630 coreconfigitem(
       
   631     b'devel',
       
   632     b'cache-vfs',
       
   633     default=None,
       
   634 )
       
   635 coreconfigitem(
       
   636     b'devel',
       
   637     b'check-locks',
       
   638     default=False,
       
   639 )
       
   640 coreconfigitem(
       
   641     b'devel',
       
   642     b'check-relroot',
       
   643     default=False,
       
   644 )
       
   645 # Track copy information for all file, not just "added" one (very slow)
       
   646 coreconfigitem(
       
   647     b'devel',
       
   648     b'copy-tracing.trace-all-files',
       
   649     default=False,
       
   650 )
       
   651 coreconfigitem(
       
   652     b'devel',
       
   653     b'default-date',
       
   654     default=None,
       
   655 )
       
   656 coreconfigitem(
       
   657     b'devel',
       
   658     b'deprec-warn',
       
   659     default=False,
       
   660 )
       
   661 # possible values:
       
   662 # - auto (the default)
       
   663 # - force-append
       
   664 # - force-new
       
   665 coreconfigitem(
       
   666     b'devel',
       
   667     b'dirstate.v2.data_update_mode',
       
   668     default="auto",
       
   669 )
       
   670 coreconfigitem(
       
   671     b'devel',
       
   672     b'disableloaddefaultcerts',
       
   673     default=False,
       
   674 )
       
   675 coreconfigitem(
       
   676     b'devel',
       
   677     b'warn-empty-changegroup',
       
   678     default=False,
       
   679 )
       
   680 coreconfigitem(
       
   681     b'devel',
       
   682     b'legacy.exchange',
       
   683     default=list,
       
   684 )
       
   685 # When True, revlogs use a special reference version of the nodemap, that is not
       
   686 # performant but is "known" to behave properly.
       
   687 coreconfigitem(
       
   688     b'devel',
       
   689     b'persistent-nodemap',
       
   690     default=False,
       
   691 )
       
   692 coreconfigitem(
       
   693     b'devel',
       
   694     b'servercafile',
       
   695     default=b'',
       
   696 )
       
   697 # This config option is intended for use in tests only. It is a giant
       
   698 # footgun to kill security. Don't define it.
       
   699 coreconfigitem(
       
   700     b'devel',
       
   701     b'server-insecure-exact-protocol',
       
   702     default=b'',
       
   703 )
       
   704 coreconfigitem(
       
   705     b'devel',
       
   706     b'serverrequirecert',
       
   707     default=False,
       
   708 )
       
   709 # Makes the status algorithm wait for the existence of this file
       
   710 # (or until a timeout of `devel.sync.status.pre-dirstate-write-file-timeout`
       
   711 # seconds) before taking the lock and writing the dirstate.
       
   712 # Status signals that it's ready to wait by creating a file
       
   713 # with the same name + `.waiting`.
       
   714 # Useful when testing race conditions.
       
   715 coreconfigitem(
       
   716     b'devel',
       
   717     b'sync.status.pre-dirstate-write-file',
       
   718     default=None,
       
   719 )
       
   720 coreconfigitem(
       
   721     b'devel',
       
   722     b'sync.status.pre-dirstate-write-file-timeout',
       
   723     default=2,
       
   724 )
       
   725 coreconfigitem(
       
   726     b'devel',
       
   727     b'sync.dirstate.post-docket-read-file',
       
   728     default=None,
       
   729 )
       
   730 coreconfigitem(
       
   731     b'devel',
       
   732     b'sync.dirstate.post-docket-read-file-timeout',
       
   733     default=2,
       
   734 )
       
   735 coreconfigitem(
       
   736     b'devel',
       
   737     b'sync.dirstate.pre-read-file',
       
   738     default=None,
       
   739 )
       
   740 coreconfigitem(
       
   741     b'devel',
       
   742     b'sync.dirstate.pre-read-file-timeout',
       
   743     default=2,
       
   744 )
       
   745 coreconfigitem(
       
   746     b'devel',
       
   747     b'strip-obsmarkers',
       
   748     default=True,
       
   749 )
       
   750 coreconfigitem(
       
   751     b'devel',
       
   752     b'warn-config',
       
   753     default=None,
       
   754 )
       
   755 coreconfigitem(
       
   756     b'devel',
       
   757     b'warn-config-default',
       
   758     default=None,
       
   759 )
       
   760 coreconfigitem(
       
   761     b'devel',
       
   762     b'user.obsmarker',
       
   763     default=None,
       
   764 )
       
   765 coreconfigitem(
       
   766     b'devel',
       
   767     b'warn-config-unknown',
       
   768     default=None,
       
   769 )
       
   770 coreconfigitem(
       
   771     b'devel',
       
   772     b'debug.copies',
       
   773     default=False,
       
   774 )
       
   775 coreconfigitem(
       
   776     b'devel',
       
   777     b'copy-tracing.multi-thread',
       
   778     default=True,
       
   779 )
       
   780 coreconfigitem(
       
   781     b'devel',
       
   782     b'debug.extensions',
       
   783     default=False,
       
   784 )
       
   785 coreconfigitem(
       
   786     b'devel',
       
   787     b'debug.repo-filters',
       
   788     default=False,
       
   789 )
       
   790 coreconfigitem(
       
   791     b'devel',
       
   792     b'debug.peer-request',
       
   793     default=False,
       
   794 )
       
   795 # If discovery.exchange-heads is False, the discovery will not start with
       
   796 # remote head fetching and local head querying.
       
   797 coreconfigitem(
       
   798     b'devel',
       
   799     b'discovery.exchange-heads',
       
   800     default=True,
       
   801 )
       
   802 # If devel.debug.abort-update is True, then any merge with the working copy,
       
   803 # e.g. [hg update], will be aborted after figuring out what needs to be done,
       
   804 # but before spawning the parallel worker
       
   805 coreconfigitem(
       
   806     b'devel',
       
   807     b'debug.abort-update',
       
   808     default=False,
       
   809 )
       
   810 # If discovery.grow-sample is False, the sample size used in set discovery will
       
   811 # not be increased through the process
       
   812 coreconfigitem(
       
   813     b'devel',
       
   814     b'discovery.grow-sample',
       
   815     default=True,
       
   816 )
       
   817 # When discovery.grow-sample.dynamic is True, the default, the sample size is
       
   818 # adapted to the shape of the undecided set (it is set to the max of:
       
   819 # <target-size>, len(roots(undecided)), len(heads(undecided)
       
   820 coreconfigitem(
       
   821     b'devel',
       
   822     b'discovery.grow-sample.dynamic',
       
   823     default=True,
       
   824 )
       
   825 # discovery.grow-sample.rate control the rate at which the sample grow
       
   826 coreconfigitem(
       
   827     b'devel',
       
   828     b'discovery.grow-sample.rate',
       
   829     default=1.05,
       
   830 )
       
   831 # If discovery.randomize is False, random sampling during discovery are
       
   832 # deterministic. It is meant for integration tests.
       
   833 coreconfigitem(
       
   834     b'devel',
       
   835     b'discovery.randomize',
       
   836     default=True,
       
   837 )
       
   838 # Control the initial size of the discovery sample
       
   839 coreconfigitem(
       
   840     b'devel',
       
   841     b'discovery.sample-size',
       
   842     default=200,
       
   843 )
       
   844 # Control the initial size of the discovery for initial change
       
   845 coreconfigitem(
       
   846     b'devel',
       
   847     b'discovery.sample-size.initial',
       
   848     default=100,
       
   849 )
       
   850 _registerdiffopts(section=b'diff')
       
   851 coreconfigitem(
       
   852     b'diff',
       
   853     b'merge',
       
   854     default=False,
       
   855     experimental=True,
       
   856 )
       
   857 coreconfigitem(
       
   858     b'email',
       
   859     b'bcc',
       
   860     default=None,
       
   861 )
       
   862 coreconfigitem(
       
   863     b'email',
       
   864     b'cc',
       
   865     default=None,
       
   866 )
       
   867 coreconfigitem(
       
   868     b'email',
       
   869     b'charsets',
       
   870     default=list,
       
   871 )
       
   872 coreconfigitem(
       
   873     b'email',
       
   874     b'from',
       
   875     default=None,
       
   876 )
       
   877 coreconfigitem(
       
   878     b'email',
       
   879     b'method',
       
   880     default=b'smtp',
       
   881 )
       
   882 coreconfigitem(
       
   883     b'email',
       
   884     b'reply-to',
       
   885     default=None,
       
   886 )
       
   887 coreconfigitem(
       
   888     b'email',
       
   889     b'to',
       
   890     default=None,
       
   891 )
       
   892 coreconfigitem(
       
   893     b'experimental',
       
   894     b'archivemetatemplate',
       
   895     default=dynamicdefault,
       
   896 )
       
   897 coreconfigitem(
       
   898     b'experimental',
       
   899     b'auto-publish',
       
   900     default=b'publish',
       
   901 )
       
   902 coreconfigitem(
       
   903     b'experimental',
       
   904     b'bundle-phases',
       
   905     default=False,
       
   906 )
       
   907 coreconfigitem(
       
   908     b'experimental',
       
   909     b'bundle2-advertise',
       
   910     default=True,
       
   911 )
       
   912 coreconfigitem(
       
   913     b'experimental',
       
   914     b'bundle2-output-capture',
       
   915     default=False,
       
   916 )
       
   917 coreconfigitem(
       
   918     b'experimental',
       
   919     b'bundle2.pushback',
       
   920     default=False,
       
   921 )
       
   922 coreconfigitem(
       
   923     b'experimental',
       
   924     b'bundle2lazylocking',
       
   925     default=False,
       
   926 )
       
   927 coreconfigitem(
       
   928     b'experimental',
       
   929     b'bundlecomplevel',
       
   930     default=None,
       
   931 )
       
   932 coreconfigitem(
       
   933     b'experimental',
       
   934     b'bundlecomplevel.bzip2',
       
   935     default=None,
       
   936 )
       
   937 coreconfigitem(
       
   938     b'experimental',
       
   939     b'bundlecomplevel.gzip',
       
   940     default=None,
       
   941 )
       
   942 coreconfigitem(
       
   943     b'experimental',
       
   944     b'bundlecomplevel.none',
       
   945     default=None,
       
   946 )
       
   947 coreconfigitem(
       
   948     b'experimental',
       
   949     b'bundlecomplevel.zstd',
       
   950     default=None,
       
   951 )
       
   952 coreconfigitem(
       
   953     b'experimental',
       
   954     b'bundlecompthreads',
       
   955     default=None,
       
   956 )
       
   957 coreconfigitem(
       
   958     b'experimental',
       
   959     b'bundlecompthreads.bzip2',
       
   960     default=None,
       
   961 )
       
   962 coreconfigitem(
       
   963     b'experimental',
       
   964     b'bundlecompthreads.gzip',
       
   965     default=None,
       
   966 )
       
   967 coreconfigitem(
       
   968     b'experimental',
       
   969     b'bundlecompthreads.none',
       
   970     default=None,
       
   971 )
       
   972 coreconfigitem(
       
   973     b'experimental',
       
   974     b'bundlecompthreads.zstd',
       
   975     default=None,
       
   976 )
       
   977 coreconfigitem(
       
   978     b'experimental',
       
   979     b'changegroup3',
       
   980     default=True,
       
   981 )
       
   982 coreconfigitem(
       
   983     b'experimental',
       
   984     b'changegroup4',
       
   985     default=False,
       
   986 )
       
   987 
       
   988 # might remove rank configuration once the computation has no impact
       
   989 coreconfigitem(
       
   990     b'experimental',
       
   991     b'changelog-v2.compute-rank',
       
   992     default=True,
       
   993 )
       
   994 coreconfigitem(
       
   995     b'experimental',
       
   996     b'cleanup-as-archived',
       
   997     default=False,
       
   998 )
       
   999 coreconfigitem(
       
  1000     b'experimental',
       
  1001     b'clientcompressionengines',
       
  1002     default=list,
       
  1003 )
       
  1004 coreconfigitem(
       
  1005     b'experimental',
       
  1006     b'copytrace',
       
  1007     default=b'on',
       
  1008 )
       
  1009 coreconfigitem(
       
  1010     b'experimental',
       
  1011     b'copytrace.movecandidateslimit',
       
  1012     default=100,
       
  1013 )
       
  1014 coreconfigitem(
       
  1015     b'experimental',
       
  1016     b'copytrace.sourcecommitlimit',
       
  1017     default=100,
       
  1018 )
       
  1019 coreconfigitem(
       
  1020     b'experimental',
       
  1021     b'copies.read-from',
       
  1022     default=b"filelog-only",
       
  1023 )
       
  1024 coreconfigitem(
       
  1025     b'experimental',
       
  1026     b'copies.write-to',
       
  1027     default=b'filelog-only',
       
  1028 )
       
  1029 coreconfigitem(
       
  1030     b'experimental',
       
  1031     b'crecordtest',
       
  1032     default=None,
       
  1033 )
       
  1034 coreconfigitem(
       
  1035     b'experimental',
       
  1036     b'directaccess',
       
  1037     default=False,
       
  1038 )
       
  1039 coreconfigitem(
       
  1040     b'experimental',
       
  1041     b'directaccess.revnums',
       
  1042     default=False,
       
  1043 )
       
  1044 coreconfigitem(
       
  1045     b'experimental',
       
  1046     b'editortmpinhg',
       
  1047     default=False,
       
  1048 )
       
  1049 coreconfigitem(
       
  1050     b'experimental',
       
  1051     b'evolution',
       
  1052     default=list,
       
  1053 )
       
  1054 coreconfigitem(
       
  1055     b'experimental',
       
  1056     b'evolution.allowdivergence',
       
  1057     default=False,
       
  1058     alias=[(b'experimental', b'allowdivergence')],
       
  1059 )
       
  1060 coreconfigitem(
       
  1061     b'experimental',
       
  1062     b'evolution.allowunstable',
       
  1063     default=None,
       
  1064 )
       
  1065 coreconfigitem(
       
  1066     b'experimental',
       
  1067     b'evolution.createmarkers',
       
  1068     default=None,
       
  1069 )
       
  1070 coreconfigitem(
       
  1071     b'experimental',
       
  1072     b'evolution.effect-flags',
       
  1073     default=True,
       
  1074     alias=[(b'experimental', b'effect-flags')],
       
  1075 )
       
  1076 coreconfigitem(
       
  1077     b'experimental',
       
  1078     b'evolution.exchange',
       
  1079     default=None,
       
  1080 )
       
  1081 coreconfigitem(
       
  1082     b'experimental',
       
  1083     b'evolution.bundle-obsmarker',
       
  1084     default=False,
       
  1085 )
       
  1086 coreconfigitem(
       
  1087     b'experimental',
       
  1088     b'evolution.bundle-obsmarker:mandatory',
       
  1089     default=True,
       
  1090 )
       
  1091 coreconfigitem(
       
  1092     b'experimental',
       
  1093     b'log.topo',
       
  1094     default=False,
       
  1095 )
       
  1096 coreconfigitem(
       
  1097     b'experimental',
       
  1098     b'evolution.report-instabilities',
       
  1099     default=True,
       
  1100 )
       
  1101 coreconfigitem(
       
  1102     b'experimental',
       
  1103     b'evolution.track-operation',
       
  1104     default=True,
       
  1105 )
       
  1106 # repo-level config to exclude a revset visibility
       
  1107 #
       
  1108 # The target use case is to use `share` to expose different subset of the same
       
  1109 # repository, especially server side. See also `server.view`.
       
  1110 coreconfigitem(
       
  1111     b'experimental',
       
  1112     b'extra-filter-revs',
       
  1113     default=None,
       
  1114 )
       
  1115 coreconfigitem(
       
  1116     b'experimental',
       
  1117     b'maxdeltachainspan',
       
  1118     default=-1,
       
  1119 )
       
  1120 # tracks files which were undeleted (merge might delete them but we explicitly
       
  1121 # kept/undeleted them) and creates new filenodes for them
       
  1122 coreconfigitem(
       
  1123     b'experimental',
       
  1124     b'merge-track-salvaged',
       
  1125     default=False,
       
  1126 )
       
  1127 coreconfigitem(
       
  1128     b'experimental',
       
  1129     b'mmapindexthreshold',
       
  1130     default=None,
       
  1131 )
       
  1132 coreconfigitem(
       
  1133     b'experimental',
       
  1134     b'narrow',
       
  1135     default=False,
       
  1136 )
       
  1137 coreconfigitem(
       
  1138     b'experimental',
       
  1139     b'nonnormalparanoidcheck',
       
  1140     default=False,
       
  1141 )
       
  1142 coreconfigitem(
       
  1143     b'experimental',
       
  1144     b'exportableenviron',
       
  1145     default=list,
       
  1146 )
       
  1147 coreconfigitem(
       
  1148     b'experimental',
       
  1149     b'extendedheader.index',
       
  1150     default=None,
       
  1151 )
       
  1152 coreconfigitem(
       
  1153     b'experimental',
       
  1154     b'extendedheader.similarity',
       
  1155     default=False,
       
  1156 )
       
  1157 coreconfigitem(
       
  1158     b'experimental',
       
  1159     b'graphshorten',
       
  1160     default=False,
       
  1161 )
       
  1162 coreconfigitem(
       
  1163     b'experimental',
       
  1164     b'graphstyle.parent',
       
  1165     default=dynamicdefault,
       
  1166 )
       
  1167 coreconfigitem(
       
  1168     b'experimental',
       
  1169     b'graphstyle.missing',
       
  1170     default=dynamicdefault,
       
  1171 )
       
  1172 coreconfigitem(
       
  1173     b'experimental',
       
  1174     b'graphstyle.grandparent',
       
  1175     default=dynamicdefault,
       
  1176 )
       
  1177 coreconfigitem(
       
  1178     b'experimental',
       
  1179     b'hook-track-tags',
       
  1180     default=False,
       
  1181 )
       
  1182 coreconfigitem(
       
  1183     b'experimental',
       
  1184     b'httppostargs',
       
  1185     default=False,
       
  1186 )
       
  1187 coreconfigitem(b'experimental', b'nointerrupt', default=False)
       
  1188 coreconfigitem(b'experimental', b'nointerrupt-interactiveonly', default=True)
       
  1189 
       
  1190 coreconfigitem(
       
  1191     b'experimental',
       
  1192     b'obsmarkers-exchange-debug',
       
  1193     default=False,
       
  1194 )
       
  1195 coreconfigitem(
       
  1196     b'experimental',
       
  1197     b'remotenames',
       
  1198     default=False,
       
  1199 )
       
  1200 coreconfigitem(
       
  1201     b'experimental',
       
  1202     b'removeemptydirs',
       
  1203     default=True,
       
  1204 )
       
  1205 coreconfigitem(
       
  1206     b'experimental',
       
  1207     b'revert.interactive.select-to-keep',
       
  1208     default=False,
       
  1209 )
       
  1210 coreconfigitem(
       
  1211     b'experimental',
       
  1212     b'revisions.prefixhexnode',
       
  1213     default=False,
       
  1214 )
       
  1215 # "out of experimental" todo list.
       
  1216 #
       
  1217 # * include management of a persistent nodemap in the main docket
       
  1218 # * enforce a "no-truncate" policy for mmap safety
       
  1219 #      - for censoring operation
       
  1220 #      - for stripping operation
       
  1221 #      - for rollback operation
       
  1222 # * proper streaming (race free) of the docket file
       
  1223 # * track garbage data to evemtually allow rewriting -existing- sidedata.
       
  1224 # * Exchange-wise, we will also need to do something more efficient than
       
  1225 #   keeping references to the affected revlogs, especially memory-wise when
       
  1226 #   rewriting sidedata.
       
  1227 # * introduce a proper solution to reduce the number of filelog related files.
       
  1228 # * use caching for reading sidedata (similar to what we do for data).
       
  1229 # * no longer set offset=0 if sidedata_size=0 (simplify cutoff computation).
       
  1230 # * Improvement to consider
       
  1231 #   - avoid compression header in chunk using the default compression?
       
  1232 #   - forbid "inline" compression mode entirely?
       
  1233 #   - split the data offset and flag field (the 2 bytes save are mostly trouble)
       
  1234 #   - keep track of uncompressed -chunk- size (to preallocate memory better)
       
  1235 #   - keep track of chain base or size (probably not that useful anymore)
       
  1236 coreconfigitem(
       
  1237     b'experimental',
       
  1238     b'revlogv2',
       
  1239     default=None,
       
  1240 )
       
  1241 coreconfigitem(
       
  1242     b'experimental',
       
  1243     b'revisions.disambiguatewithin',
       
  1244     default=None,
       
  1245 )
       
  1246 coreconfigitem(
       
  1247     b'experimental',
       
  1248     b'rust.index',
       
  1249     default=False,
       
  1250 )
       
  1251 coreconfigitem(
       
  1252     b'experimental',
       
  1253     b'server.allow-hidden-access',
       
  1254     default=list,
       
  1255 )
       
  1256 coreconfigitem(
       
  1257     b'experimental',
       
  1258     b'server.filesdata.recommended-batch-size',
       
  1259     default=50000,
       
  1260 )
       
  1261 coreconfigitem(
       
  1262     b'experimental',
       
  1263     b'server.manifestdata.recommended-batch-size',
       
  1264     default=100000,
       
  1265 )
       
  1266 coreconfigitem(
       
  1267     b'experimental',
       
  1268     b'server.stream-narrow-clones',
       
  1269     default=False,
       
  1270 )
       
  1271 coreconfigitem(
       
  1272     b'experimental',
       
  1273     b'single-head-per-branch',
       
  1274     default=False,
       
  1275 )
       
  1276 coreconfigitem(
       
  1277     b'experimental',
       
  1278     b'single-head-per-branch:account-closed-heads',
       
  1279     default=False,
       
  1280 )
       
  1281 coreconfigitem(
       
  1282     b'experimental',
       
  1283     b'single-head-per-branch:public-changes-only',
       
  1284     default=False,
       
  1285 )
       
  1286 coreconfigitem(
       
  1287     b'experimental',
       
  1288     b'sparse-read',
       
  1289     default=False,
       
  1290 )
       
  1291 coreconfigitem(
       
  1292     b'experimental',
       
  1293     b'sparse-read.density-threshold',
       
  1294     default=0.50,
       
  1295 )
       
  1296 coreconfigitem(
       
  1297     b'experimental',
       
  1298     b'sparse-read.min-gap-size',
       
  1299     default=b'65K',
       
  1300 )
       
  1301 coreconfigitem(
       
  1302     b'experimental',
       
  1303     b'stream-v3',
       
  1304     default=False,
       
  1305 )
       
  1306 coreconfigitem(
       
  1307     b'experimental',
       
  1308     b'treemanifest',
       
  1309     default=False,
       
  1310 )
       
  1311 coreconfigitem(
       
  1312     b'experimental',
       
  1313     b'update.atomic-file',
       
  1314     default=False,
       
  1315 )
       
  1316 coreconfigitem(
       
  1317     b'experimental',
       
  1318     b'web.full-garbage-collection-rate',
       
  1319     default=1,  # still forcing a full collection on each request
       
  1320 )
       
  1321 coreconfigitem(
       
  1322     b'experimental',
       
  1323     b'worker.wdir-get-thread-safe',
       
  1324     default=False,
       
  1325 )
       
  1326 coreconfigitem(
       
  1327     b'experimental',
       
  1328     b'worker.repository-upgrade',
       
  1329     default=False,
       
  1330 )
       
  1331 coreconfigitem(
       
  1332     b'experimental',
       
  1333     b'xdiff',
       
  1334     default=False,
       
  1335 )
       
  1336 coreconfigitem(
       
  1337     b'extensions',
       
  1338     b'[^:]*',
       
  1339     default=None,
       
  1340     generic=True,
       
  1341 )
       
  1342 coreconfigitem(
       
  1343     b'extensions',
       
  1344     b'[^:]*:required',
       
  1345     default=False,
       
  1346     generic=True,
       
  1347 )
       
  1348 coreconfigitem(
       
  1349     b'extdata',
       
  1350     b'.*',
       
  1351     default=None,
       
  1352     generic=True,
       
  1353 )
       
  1354 coreconfigitem(
       
  1355     b'format',
       
  1356     b'bookmarks-in-store',
       
  1357     default=False,
       
  1358 )
       
  1359 coreconfigitem(
       
  1360     b'format',
       
  1361     b'chunkcachesize',
       
  1362     default=None,
       
  1363     experimental=True,
       
  1364 )
       
  1365 coreconfigitem(
       
  1366     # Enable this dirstate format *when creating a new repository*.
       
  1367     # Which format to use for existing repos is controlled by .hg/requires
       
  1368     b'format',
       
  1369     b'use-dirstate-v2',
       
  1370     default=False,
       
  1371     experimental=True,
       
  1372     alias=[(b'format', b'exp-rc-dirstate-v2')],
       
  1373 )
       
  1374 coreconfigitem(
       
  1375     b'format',
       
  1376     b'use-dirstate-v2.automatic-upgrade-of-mismatching-repositories',
       
  1377     default=False,
       
  1378     experimental=True,
       
  1379 )
       
  1380 coreconfigitem(
       
  1381     b'format',
       
  1382     b'use-dirstate-v2.automatic-upgrade-of-mismatching-repositories:quiet',
       
  1383     default=False,
       
  1384     experimental=True,
       
  1385 )
       
  1386 coreconfigitem(
       
  1387     b'format',
       
  1388     b'use-dirstate-tracked-hint',
       
  1389     default=False,
       
  1390     experimental=True,
       
  1391 )
       
  1392 coreconfigitem(
       
  1393     b'format',
       
  1394     b'use-dirstate-tracked-hint.version',
       
  1395     default=1,
       
  1396     experimental=True,
       
  1397 )
       
  1398 coreconfigitem(
       
  1399     b'format',
       
  1400     b'use-dirstate-tracked-hint.automatic-upgrade-of-mismatching-repositories',
       
  1401     default=False,
       
  1402     experimental=True,
       
  1403 )
       
  1404 coreconfigitem(
       
  1405     b'format',
       
  1406     b'use-dirstate-tracked-hint.automatic-upgrade-of-mismatching-repositories:quiet',
       
  1407     default=False,
       
  1408     experimental=True,
       
  1409 )
       
  1410 coreconfigitem(
       
  1411     b'format',
       
  1412     b'dotencode',
       
  1413     default=True,
       
  1414 )
       
  1415 coreconfigitem(
       
  1416     b'format',
       
  1417     b'generaldelta',
       
  1418     default=False,
       
  1419     experimental=True,
       
  1420 )
       
  1421 coreconfigitem(
       
  1422     b'format',
       
  1423     b'manifestcachesize',
       
  1424     default=None,
       
  1425     experimental=True,
       
  1426 )
       
  1427 coreconfigitem(
       
  1428     b'format',
       
  1429     b'maxchainlen',
       
  1430     default=dynamicdefault,
       
  1431     experimental=True,
       
  1432 )
       
  1433 coreconfigitem(
       
  1434     b'format',
       
  1435     b'obsstore-version',
       
  1436     default=None,
       
  1437 )
       
  1438 coreconfigitem(
       
  1439     b'format',
       
  1440     b'sparse-revlog',
       
  1441     default=True,
       
  1442 )
       
  1443 coreconfigitem(
       
  1444     b'format',
       
  1445     b'revlog-compression',
       
  1446     default=lambda: [b'zstd', b'zlib'],
       
  1447     alias=[(b'experimental', b'format.compression')],
       
  1448 )
       
  1449 # Experimental TODOs:
       
  1450 #
       
  1451 # * Same as for revlogv2 (but for the reduction of the number of files)
       
  1452 # * Actually computing the rank of changesets
       
  1453 # * Improvement to investigate
       
  1454 #   - storing .hgtags fnode
       
  1455 #   - storing branch related identifier
       
  1456 
       
  1457 coreconfigitem(
       
  1458     b'format',
       
  1459     b'exp-use-changelog-v2',
       
  1460     default=None,
       
  1461     experimental=True,
       
  1462 )
       
  1463 coreconfigitem(
       
  1464     b'format',
       
  1465     b'usefncache',
       
  1466     default=True,
       
  1467 )
       
  1468 coreconfigitem(
       
  1469     b'format',
       
  1470     b'usegeneraldelta',
       
  1471     default=True,
       
  1472 )
       
  1473 coreconfigitem(
       
  1474     b'format',
       
  1475     b'usestore',
       
  1476     default=True,
       
  1477 )
       
  1478 coreconfigitem(
       
  1479     b'format',
       
  1480     b'use-persistent-nodemap',
       
  1481     default=dynamicdefault,
       
  1482 )
       
  1483 coreconfigitem(
       
  1484     b'format',
       
  1485     b'exp-use-copies-side-data-changeset',
       
  1486     default=False,
       
  1487     experimental=True,
       
  1488 )
       
  1489 coreconfigitem(
       
  1490     b'format',
       
  1491     b'use-share-safe',
       
  1492     default=True,
       
  1493 )
       
  1494 coreconfigitem(
       
  1495     b'format',
       
  1496     b'use-share-safe.automatic-upgrade-of-mismatching-repositories',
       
  1497     default=False,
       
  1498     experimental=True,
       
  1499 )
       
  1500 coreconfigitem(
       
  1501     b'format',
       
  1502     b'use-share-safe.automatic-upgrade-of-mismatching-repositories:quiet',
       
  1503     default=False,
       
  1504     experimental=True,
       
  1505 )
       
  1506 
       
  1507 # Moving this on by default means we are confident about the scaling of phases.
       
  1508 # This is not garanteed to be the case at the time this message is written.
       
  1509 coreconfigitem(
       
  1510     b'format',
       
  1511     b'use-internal-phase',
       
  1512     default=False,
       
  1513     experimental=True,
       
  1514 )
       
  1515 # The interaction between the archived phase and obsolescence markers needs to
       
  1516 # be sorted out before wider usage of this are to be considered.
       
  1517 #
       
  1518 # At the time this message is written, behavior when archiving obsolete
       
  1519 # changeset differ significantly from stripping. As part of stripping, we also
       
  1520 # remove the obsolescence marker associated to the stripped changesets,
       
  1521 # revealing the precedecessors changesets when applicable. When archiving, we
       
  1522 # don't touch the obsolescence markers, keeping everything hidden. This can
       
  1523 # result in quite confusing situation for people combining exchanging draft
       
  1524 # with the archived phases. As some markers needed by others may be skipped
       
  1525 # during exchange.
       
  1526 coreconfigitem(
       
  1527     b'format',
       
  1528     b'exp-archived-phase',
       
  1529     default=False,
       
  1530     experimental=True,
       
  1531 )
       
  1532 coreconfigitem(
       
  1533     b'shelve',
       
  1534     b'store',
       
  1535     default=b'internal',
       
  1536     experimental=True,
       
  1537 )
       
  1538 coreconfigitem(
       
  1539     b'fsmonitor',
       
  1540     b'warn_when_unused',
       
  1541     default=True,
       
  1542 )
       
  1543 coreconfigitem(
       
  1544     b'fsmonitor',
       
  1545     b'warn_update_file_count',
       
  1546     default=50000,
       
  1547 )
       
  1548 coreconfigitem(
       
  1549     b'fsmonitor',
       
  1550     b'warn_update_file_count_rust',
       
  1551     default=400000,
       
  1552 )
       
  1553 coreconfigitem(
       
  1554     b'help',
       
  1555     br'hidden-command\..*',
       
  1556     default=False,
       
  1557     generic=True,
       
  1558 )
       
  1559 coreconfigitem(
       
  1560     b'help',
       
  1561     br'hidden-topic\..*',
       
  1562     default=False,
       
  1563     generic=True,
       
  1564 )
       
  1565 coreconfigitem(
       
  1566     b'hooks',
       
  1567     b'[^:]*',
       
  1568     default=dynamicdefault,
       
  1569     generic=True,
       
  1570 )
       
  1571 coreconfigitem(
       
  1572     b'hooks',
       
  1573     b'.*:run-with-plain',
       
  1574     default=True,
       
  1575     generic=True,
       
  1576 )
       
  1577 coreconfigitem(
       
  1578     b'hgweb-paths',
       
  1579     b'.*',
       
  1580     default=list,
       
  1581     generic=True,
       
  1582 )
       
  1583 coreconfigitem(
       
  1584     b'hostfingerprints',
       
  1585     b'.*',
       
  1586     default=list,
       
  1587     generic=True,
       
  1588 )
       
  1589 coreconfigitem(
       
  1590     b'hostsecurity',
       
  1591     b'ciphers',
       
  1592     default=None,
       
  1593 )
       
  1594 coreconfigitem(
       
  1595     b'hostsecurity',
       
  1596     b'minimumprotocol',
       
  1597     default=dynamicdefault,
       
  1598 )
       
  1599 coreconfigitem(
       
  1600     b'hostsecurity',
       
  1601     b'.*:minimumprotocol$',
       
  1602     default=dynamicdefault,
       
  1603     generic=True,
       
  1604 )
       
  1605 coreconfigitem(
       
  1606     b'hostsecurity',
       
  1607     b'.*:ciphers$',
       
  1608     default=dynamicdefault,
       
  1609     generic=True,
       
  1610 )
       
  1611 coreconfigitem(
       
  1612     b'hostsecurity',
       
  1613     b'.*:fingerprints$',
       
  1614     default=list,
       
  1615     generic=True,
       
  1616 )
       
  1617 coreconfigitem(
       
  1618     b'hostsecurity',
       
  1619     b'.*:verifycertsfile$',
       
  1620     default=None,
       
  1621     generic=True,
       
  1622 )
       
  1623 
       
  1624 coreconfigitem(
       
  1625     b'http_proxy',
       
  1626     b'always',
       
  1627     default=False,
       
  1628 )
       
  1629 coreconfigitem(
       
  1630     b'http_proxy',
       
  1631     b'host',
       
  1632     default=None,
       
  1633 )
       
  1634 coreconfigitem(
       
  1635     b'http_proxy',
       
  1636     b'no',
       
  1637     default=list,
       
  1638 )
       
  1639 coreconfigitem(
       
  1640     b'http_proxy',
       
  1641     b'passwd',
       
  1642     default=None,
       
  1643 )
       
  1644 coreconfigitem(
       
  1645     b'http_proxy',
       
  1646     b'user',
       
  1647     default=None,
       
  1648 )
       
  1649 
       
  1650 coreconfigitem(
       
  1651     b'http',
       
  1652     b'timeout',
       
  1653     default=None,
       
  1654 )
       
  1655 
       
  1656 coreconfigitem(
       
  1657     b'logtoprocess',
       
  1658     b'commandexception',
       
  1659     default=None,
       
  1660 )
       
  1661 coreconfigitem(
       
  1662     b'logtoprocess',
       
  1663     b'commandfinish',
       
  1664     default=None,
       
  1665 )
       
  1666 coreconfigitem(
       
  1667     b'logtoprocess',
       
  1668     b'command',
       
  1669     default=None,
       
  1670 )
       
  1671 coreconfigitem(
       
  1672     b'logtoprocess',
       
  1673     b'develwarn',
       
  1674     default=None,
       
  1675 )
       
  1676 coreconfigitem(
       
  1677     b'logtoprocess',
       
  1678     b'uiblocked',
       
  1679     default=None,
       
  1680 )
       
  1681 coreconfigitem(
       
  1682     b'merge',
       
  1683     b'checkunknown',
       
  1684     default=b'abort',
       
  1685 )
       
  1686 coreconfigitem(
       
  1687     b'merge',
       
  1688     b'checkignored',
       
  1689     default=b'abort',
       
  1690 )
       
  1691 coreconfigitem(
       
  1692     b'experimental',
       
  1693     b'merge.checkpathconflicts',
       
  1694     default=False,
       
  1695 )
       
  1696 coreconfigitem(
       
  1697     b'merge',
       
  1698     b'followcopies',
       
  1699     default=True,
       
  1700 )
       
  1701 coreconfigitem(
       
  1702     b'merge',
       
  1703     b'on-failure',
       
  1704     default=b'continue',
       
  1705 )
       
  1706 coreconfigitem(
       
  1707     b'merge',
       
  1708     b'preferancestor',
       
  1709     default=lambda: [b'*'],
       
  1710     experimental=True,
       
  1711 )
       
  1712 coreconfigitem(
       
  1713     b'merge',
       
  1714     b'strict-capability-check',
       
  1715     default=False,
       
  1716 )
       
  1717 coreconfigitem(
       
  1718     b'merge',
       
  1719     b'disable-partial-tools',
       
  1720     default=False,
       
  1721     experimental=True,
       
  1722 )
       
  1723 coreconfigitem(
       
  1724     b'partial-merge-tools',
       
  1725     b'.*',
       
  1726     default=None,
       
  1727     generic=True,
       
  1728     experimental=True,
       
  1729 )
       
  1730 coreconfigitem(
       
  1731     b'partial-merge-tools',
       
  1732     br'.*\.patterns',
       
  1733     default=dynamicdefault,
       
  1734     generic=True,
       
  1735     priority=-1,
       
  1736     experimental=True,
       
  1737 )
       
  1738 coreconfigitem(
       
  1739     b'partial-merge-tools',
       
  1740     br'.*\.executable$',
       
  1741     default=dynamicdefault,
       
  1742     generic=True,
       
  1743     priority=-1,
       
  1744     experimental=True,
       
  1745 )
       
  1746 coreconfigitem(
       
  1747     b'partial-merge-tools',
       
  1748     br'.*\.order',
       
  1749     default=0,
       
  1750     generic=True,
       
  1751     priority=-1,
       
  1752     experimental=True,
       
  1753 )
       
  1754 coreconfigitem(
       
  1755     b'partial-merge-tools',
       
  1756     br'.*\.args',
       
  1757     default=b"$local $base $other",
       
  1758     generic=True,
       
  1759     priority=-1,
       
  1760     experimental=True,
       
  1761 )
       
  1762 coreconfigitem(
       
  1763     b'partial-merge-tools',
       
  1764     br'.*\.disable',
       
  1765     default=False,
       
  1766     generic=True,
       
  1767     priority=-1,
       
  1768     experimental=True,
       
  1769 )
       
  1770 coreconfigitem(
       
  1771     b'merge-tools',
       
  1772     b'.*',
       
  1773     default=None,
       
  1774     generic=True,
       
  1775 )
       
  1776 coreconfigitem(
       
  1777     b'merge-tools',
       
  1778     br'.*\.args$',
       
  1779     default=b"$local $base $other",
       
  1780     generic=True,
       
  1781     priority=-1,
       
  1782 )
       
  1783 coreconfigitem(
       
  1784     b'merge-tools',
       
  1785     br'.*\.binary$',
       
  1786     default=False,
       
  1787     generic=True,
       
  1788     priority=-1,
       
  1789 )
       
  1790 coreconfigitem(
       
  1791     b'merge-tools',
       
  1792     br'.*\.check$',
       
  1793     default=list,
       
  1794     generic=True,
       
  1795     priority=-1,
       
  1796 )
       
  1797 coreconfigitem(
       
  1798     b'merge-tools',
       
  1799     br'.*\.checkchanged$',
       
  1800     default=False,
       
  1801     generic=True,
       
  1802     priority=-1,
       
  1803 )
       
  1804 coreconfigitem(
       
  1805     b'merge-tools',
       
  1806     br'.*\.executable$',
       
  1807     default=dynamicdefault,
       
  1808     generic=True,
       
  1809     priority=-1,
       
  1810 )
       
  1811 coreconfigitem(
       
  1812     b'merge-tools',
       
  1813     br'.*\.fixeol$',
       
  1814     default=False,
       
  1815     generic=True,
       
  1816     priority=-1,
       
  1817 )
       
  1818 coreconfigitem(
       
  1819     b'merge-tools',
       
  1820     br'.*\.gui$',
       
  1821     default=False,
       
  1822     generic=True,
       
  1823     priority=-1,
       
  1824 )
       
  1825 coreconfigitem(
       
  1826     b'merge-tools',
       
  1827     br'.*\.mergemarkers$',
       
  1828     default=b'basic',
       
  1829     generic=True,
       
  1830     priority=-1,
       
  1831 )
       
  1832 coreconfigitem(
       
  1833     b'merge-tools',
       
  1834     br'.*\.mergemarkertemplate$',
       
  1835     default=dynamicdefault,  # take from command-templates.mergemarker
       
  1836     generic=True,
       
  1837     priority=-1,
       
  1838 )
       
  1839 coreconfigitem(
       
  1840     b'merge-tools',
       
  1841     br'.*\.priority$',
       
  1842     default=0,
       
  1843     generic=True,
       
  1844     priority=-1,
       
  1845 )
       
  1846 coreconfigitem(
       
  1847     b'merge-tools',
       
  1848     br'.*\.premerge$',
       
  1849     default=dynamicdefault,
       
  1850     generic=True,
       
  1851     priority=-1,
       
  1852 )
       
  1853 coreconfigitem(
       
  1854     b'merge-tools',
       
  1855     br'.*\.regappend$',
       
  1856     default=b"",
       
  1857     generic=True,
       
  1858     priority=-1,
       
  1859 )
       
  1860 coreconfigitem(
       
  1861     b'merge-tools',
       
  1862     br'.*\.symlink$',
       
  1863     default=False,
       
  1864     generic=True,
       
  1865     priority=-1,
       
  1866 )
       
  1867 coreconfigitem(
       
  1868     b'pager',
       
  1869     b'attend-.*',
       
  1870     default=dynamicdefault,
       
  1871     generic=True,
       
  1872 )
       
  1873 coreconfigitem(
       
  1874     b'pager',
       
  1875     b'ignore',
       
  1876     default=list,
       
  1877 )
       
  1878 coreconfigitem(
       
  1879     b'pager',
       
  1880     b'pager',
       
  1881     default=dynamicdefault,
       
  1882 )
       
  1883 coreconfigitem(
       
  1884     b'patch',
       
  1885     b'eol',
       
  1886     default=b'strict',
       
  1887 )
       
  1888 coreconfigitem(
       
  1889     b'patch',
       
  1890     b'fuzz',
       
  1891     default=2,
       
  1892 )
       
  1893 coreconfigitem(
       
  1894     b'paths',
       
  1895     b'default',
       
  1896     default=None,
       
  1897 )
       
  1898 coreconfigitem(
       
  1899     b'paths',
       
  1900     b'default-push',
       
  1901     default=None,
       
  1902 )
       
  1903 coreconfigitem(
       
  1904     b'paths',
       
  1905     b'[^:]*',
       
  1906     default=None,
       
  1907     generic=True,
       
  1908 )
       
  1909 coreconfigitem(
       
  1910     b'paths',
       
  1911     b'.*:bookmarks.mode',
       
  1912     default='default',
       
  1913     generic=True,
       
  1914 )
       
  1915 coreconfigitem(
       
  1916     b'paths',
       
  1917     b'.*:multi-urls',
       
  1918     default=False,
       
  1919     generic=True,
       
  1920 )
       
  1921 coreconfigitem(
       
  1922     b'paths',
       
  1923     b'.*:pushrev',
       
  1924     default=None,
       
  1925     generic=True,
       
  1926 )
       
  1927 coreconfigitem(
       
  1928     b'paths',
       
  1929     b'.*:pushurl',
       
  1930     default=None,
       
  1931     generic=True,
       
  1932 )
       
  1933 coreconfigitem(
       
  1934     b'paths',
       
  1935     b'.*:pulled-delta-reuse-policy',
       
  1936     default=None,
       
  1937     generic=True,
       
  1938 )
       
  1939 coreconfigitem(
       
  1940     b'phases',
       
  1941     b'checksubrepos',
       
  1942     default=b'follow',
       
  1943 )
       
  1944 coreconfigitem(
       
  1945     b'phases',
       
  1946     b'new-commit',
       
  1947     default=b'draft',
       
  1948 )
       
  1949 coreconfigitem(
       
  1950     b'phases',
       
  1951     b'publish',
       
  1952     default=True,
       
  1953 )
       
  1954 coreconfigitem(
       
  1955     b'profiling',
       
  1956     b'enabled',
       
  1957     default=False,
       
  1958 )
       
  1959 coreconfigitem(
       
  1960     b'profiling',
       
  1961     b'format',
       
  1962     default=b'text',
       
  1963 )
       
  1964 coreconfigitem(
       
  1965     b'profiling',
       
  1966     b'freq',
       
  1967     default=1000,
       
  1968 )
       
  1969 coreconfigitem(
       
  1970     b'profiling',
       
  1971     b'limit',
       
  1972     default=30,
       
  1973 )
       
  1974 coreconfigitem(
       
  1975     b'profiling',
       
  1976     b'nested',
       
  1977     default=0,
       
  1978 )
       
  1979 coreconfigitem(
       
  1980     b'profiling',
       
  1981     b'output',
       
  1982     default=None,
       
  1983 )
       
  1984 coreconfigitem(
       
  1985     b'profiling',
       
  1986     b'showmax',
       
  1987     default=0.999,
       
  1988 )
       
  1989 coreconfigitem(
       
  1990     b'profiling',
       
  1991     b'showmin',
       
  1992     default=dynamicdefault,
       
  1993 )
       
  1994 coreconfigitem(
       
  1995     b'profiling',
       
  1996     b'showtime',
       
  1997     default=True,
       
  1998 )
       
  1999 coreconfigitem(
       
  2000     b'profiling',
       
  2001     b'sort',
       
  2002     default=b'inlinetime',
       
  2003 )
       
  2004 coreconfigitem(
       
  2005     b'profiling',
       
  2006     b'statformat',
       
  2007     default=b'hotpath',
       
  2008 )
       
  2009 coreconfigitem(
       
  2010     b'profiling',
       
  2011     b'time-track',
       
  2012     default=dynamicdefault,
       
  2013 )
       
  2014 coreconfigitem(
       
  2015     b'profiling',
       
  2016     b'type',
       
  2017     default=b'stat',
       
  2018 )
       
  2019 coreconfigitem(
       
  2020     b'progress',
       
  2021     b'assume-tty',
       
  2022     default=False,
       
  2023 )
       
  2024 coreconfigitem(
       
  2025     b'progress',
       
  2026     b'changedelay',
       
  2027     default=1,
       
  2028 )
       
  2029 coreconfigitem(
       
  2030     b'progress',
       
  2031     b'clear-complete',
       
  2032     default=True,
       
  2033 )
       
  2034 coreconfigitem(
       
  2035     b'progress',
       
  2036     b'debug',
       
  2037     default=False,
       
  2038 )
       
  2039 coreconfigitem(
       
  2040     b'progress',
       
  2041     b'delay',
       
  2042     default=3,
       
  2043 )
       
  2044 coreconfigitem(
       
  2045     b'progress',
       
  2046     b'disable',
       
  2047     default=False,
       
  2048 )
       
  2049 coreconfigitem(
       
  2050     b'progress',
       
  2051     b'estimateinterval',
       
  2052     default=60.0,
       
  2053 )
       
  2054 coreconfigitem(
       
  2055     b'progress',
       
  2056     b'format',
       
  2057     default=lambda: [b'topic', b'bar', b'number', b'estimate'],
       
  2058 )
       
  2059 coreconfigitem(
       
  2060     b'progress',
       
  2061     b'refresh',
       
  2062     default=0.1,
       
  2063 )
       
  2064 coreconfigitem(
       
  2065     b'progress',
       
  2066     b'width',
       
  2067     default=dynamicdefault,
       
  2068 )
       
  2069 coreconfigitem(
       
  2070     b'pull',
       
  2071     b'confirm',
       
  2072     default=False,
       
  2073 )
       
  2074 coreconfigitem(
       
  2075     b'push',
       
  2076     b'pushvars.server',
       
  2077     default=False,
       
  2078 )
       
  2079 coreconfigitem(
       
  2080     b'rewrite',
       
  2081     b'backup-bundle',
       
  2082     default=True,
       
  2083     alias=[(b'ui', b'history-editing-backup')],
       
  2084 )
       
  2085 coreconfigitem(
       
  2086     b'rewrite',
       
  2087     b'update-timestamp',
       
  2088     default=False,
       
  2089 )
       
  2090 coreconfigitem(
       
  2091     b'rewrite',
       
  2092     b'empty-successor',
       
  2093     default=b'skip',
       
  2094     experimental=True,
       
  2095 )
       
  2096 # experimental as long as format.use-dirstate-v2 is.
       
  2097 coreconfigitem(
       
  2098     b'storage',
       
  2099     b'dirstate-v2.slow-path',
       
  2100     default=b"abort",
       
  2101     experimental=True,
       
  2102 )
       
  2103 coreconfigitem(
       
  2104     b'storage',
       
  2105     b'new-repo-backend',
       
  2106     default=b'revlogv1',
       
  2107     experimental=True,
       
  2108 )
       
  2109 coreconfigitem(
       
  2110     b'storage',
       
  2111     b'revlog.optimize-delta-parent-choice',
       
  2112     default=True,
       
  2113     alias=[(b'format', b'aggressivemergedeltas')],
       
  2114 )
       
  2115 coreconfigitem(
       
  2116     b'storage',
       
  2117     b'revlog.delta-parent-search.candidate-group-chunk-size',
       
  2118     default=20,
       
  2119 )
       
  2120 coreconfigitem(
       
  2121     b'storage',
       
  2122     b'revlog.issue6528.fix-incoming',
       
  2123     default=True,
       
  2124 )
       
  2125 # experimental as long as rust is experimental (or a C version is implemented)
       
  2126 coreconfigitem(
       
  2127     b'storage',
       
  2128     b'revlog.persistent-nodemap.mmap',
       
  2129     default=True,
       
  2130 )
       
  2131 # experimental as long as format.use-persistent-nodemap is.
       
  2132 coreconfigitem(
       
  2133     b'storage',
       
  2134     b'revlog.persistent-nodemap.slow-path',
       
  2135     default=b"abort",
       
  2136 )
       
  2137 
       
  2138 coreconfigitem(
       
  2139     b'storage',
       
  2140     b'revlog.reuse-external-delta',
       
  2141     default=True,
       
  2142 )
       
  2143 # This option is True unless `format.generaldelta` is set.
       
  2144 coreconfigitem(
       
  2145     b'storage',
       
  2146     b'revlog.reuse-external-delta-parent',
       
  2147     default=None,
       
  2148 )
       
  2149 coreconfigitem(
       
  2150     b'storage',
       
  2151     b'revlog.zlib.level',
       
  2152     default=None,
       
  2153 )
       
  2154 coreconfigitem(
       
  2155     b'storage',
       
  2156     b'revlog.zstd.level',
       
  2157     default=None,
       
  2158 )
       
  2159 coreconfigitem(
       
  2160     b'server',
       
  2161     b'bookmarks-pushkey-compat',
       
  2162     default=True,
       
  2163 )
       
  2164 coreconfigitem(
       
  2165     b'server',
       
  2166     b'bundle1',
       
  2167     default=True,
       
  2168 )
       
  2169 coreconfigitem(
       
  2170     b'server',
       
  2171     b'bundle1gd',
       
  2172     default=None,
       
  2173 )
       
  2174 coreconfigitem(
       
  2175     b'server',
       
  2176     b'bundle1.pull',
       
  2177     default=None,
       
  2178 )
       
  2179 coreconfigitem(
       
  2180     b'server',
       
  2181     b'bundle1gd.pull',
       
  2182     default=None,
       
  2183 )
       
  2184 coreconfigitem(
       
  2185     b'server',
       
  2186     b'bundle1.push',
       
  2187     default=None,
       
  2188 )
       
  2189 coreconfigitem(
       
  2190     b'server',
       
  2191     b'bundle1gd.push',
       
  2192     default=None,
       
  2193 )
       
  2194 coreconfigitem(
       
  2195     b'server',
       
  2196     b'bundle2.stream',
       
  2197     default=True,
       
  2198     alias=[(b'experimental', b'bundle2.stream')],
       
  2199 )
       
  2200 coreconfigitem(
       
  2201     b'server',
       
  2202     b'compressionengines',
       
  2203     default=list,
       
  2204 )
       
  2205 coreconfigitem(
       
  2206     b'server',
       
  2207     b'concurrent-push-mode',
       
  2208     default=b'check-related',
       
  2209 )
       
  2210 coreconfigitem(
       
  2211     b'server',
       
  2212     b'disablefullbundle',
       
  2213     default=False,
       
  2214 )
       
  2215 coreconfigitem(
       
  2216     b'server',
       
  2217     b'maxhttpheaderlen',
       
  2218     default=1024,
       
  2219 )
       
  2220 coreconfigitem(
       
  2221     b'server',
       
  2222     b'pullbundle',
       
  2223     default=True,
       
  2224 )
       
  2225 coreconfigitem(
       
  2226     b'server',
       
  2227     b'preferuncompressed',
       
  2228     default=False,
       
  2229 )
       
  2230 coreconfigitem(
       
  2231     b'server',
       
  2232     b'streamunbundle',
       
  2233     default=False,
       
  2234 )
       
  2235 coreconfigitem(
       
  2236     b'server',
       
  2237     b'uncompressed',
       
  2238     default=True,
       
  2239 )
       
  2240 coreconfigitem(
       
  2241     b'server',
       
  2242     b'uncompressedallowsecret',
       
  2243     default=False,
       
  2244 )
       
  2245 coreconfigitem(
       
  2246     b'server',
       
  2247     b'view',
       
  2248     default=b'served',
       
  2249 )
       
  2250 coreconfigitem(
       
  2251     b'server',
       
  2252     b'validate',
       
  2253     default=False,
       
  2254 )
       
  2255 coreconfigitem(
       
  2256     b'server',
       
  2257     b'zliblevel',
       
  2258     default=-1,
       
  2259 )
       
  2260 coreconfigitem(
       
  2261     b'server',
       
  2262     b'zstdlevel',
       
  2263     default=3,
       
  2264 )
       
  2265 coreconfigitem(
       
  2266     b'share',
       
  2267     b'pool',
       
  2268     default=None,
       
  2269 )
       
  2270 coreconfigitem(
       
  2271     b'share',
       
  2272     b'poolnaming',
       
  2273     default=b'identity',
       
  2274 )
       
  2275 coreconfigitem(
       
  2276     b'share',
       
  2277     b'safe-mismatch.source-not-safe',
       
  2278     default=b'abort',
       
  2279 )
       
  2280 coreconfigitem(
       
  2281     b'share',
       
  2282     b'safe-mismatch.source-safe',
       
  2283     default=b'abort',
       
  2284 )
       
  2285 coreconfigitem(
       
  2286     b'share',
       
  2287     b'safe-mismatch.source-not-safe.warn',
       
  2288     default=True,
       
  2289 )
       
  2290 coreconfigitem(
       
  2291     b'share',
       
  2292     b'safe-mismatch.source-safe.warn',
       
  2293     default=True,
       
  2294 )
       
  2295 coreconfigitem(
       
  2296     b'share',
       
  2297     b'safe-mismatch.source-not-safe:verbose-upgrade',
       
  2298     default=True,
       
  2299 )
       
  2300 coreconfigitem(
       
  2301     b'share',
       
  2302     b'safe-mismatch.source-safe:verbose-upgrade',
       
  2303     default=True,
       
  2304 )
       
  2305 coreconfigitem(
       
  2306     b'shelve',
       
  2307     b'maxbackups',
       
  2308     default=10,
       
  2309 )
       
  2310 coreconfigitem(
       
  2311     b'smtp',
       
  2312     b'host',
       
  2313     default=None,
       
  2314 )
       
  2315 coreconfigitem(
       
  2316     b'smtp',
       
  2317     b'local_hostname',
       
  2318     default=None,
       
  2319 )
       
  2320 coreconfigitem(
       
  2321     b'smtp',
       
  2322     b'password',
       
  2323     default=None,
       
  2324 )
       
  2325 coreconfigitem(
       
  2326     b'smtp',
       
  2327     b'port',
       
  2328     default=dynamicdefault,
       
  2329 )
       
  2330 coreconfigitem(
       
  2331     b'smtp',
       
  2332     b'tls',
       
  2333     default=b'none',
       
  2334 )
       
  2335 coreconfigitem(
       
  2336     b'smtp',
       
  2337     b'username',
       
  2338     default=None,
       
  2339 )
       
  2340 coreconfigitem(
       
  2341     b'sparse',
       
  2342     b'missingwarning',
       
  2343     default=True,
       
  2344     experimental=True,
       
  2345 )
       
  2346 coreconfigitem(
       
  2347     b'subrepos',
       
  2348     b'allowed',
       
  2349     default=dynamicdefault,  # to make backporting simpler
       
  2350 )
       
  2351 coreconfigitem(
       
  2352     b'subrepos',
       
  2353     b'hg:allowed',
       
  2354     default=dynamicdefault,
       
  2355 )
       
  2356 coreconfigitem(
       
  2357     b'subrepos',
       
  2358     b'git:allowed',
       
  2359     default=dynamicdefault,
       
  2360 )
       
  2361 coreconfigitem(
       
  2362     b'subrepos',
       
  2363     b'svn:allowed',
       
  2364     default=dynamicdefault,
       
  2365 )
       
  2366 coreconfigitem(
       
  2367     b'templates',
       
  2368     b'.*',
       
  2369     default=None,
       
  2370     generic=True,
       
  2371 )
       
  2372 coreconfigitem(
       
  2373     b'templateconfig',
       
  2374     b'.*',
       
  2375     default=dynamicdefault,
       
  2376     generic=True,
       
  2377 )
       
  2378 coreconfigitem(
       
  2379     b'trusted',
       
  2380     b'groups',
       
  2381     default=list,
       
  2382 )
       
  2383 coreconfigitem(
       
  2384     b'trusted',
       
  2385     b'users',
       
  2386     default=list,
       
  2387 )
       
  2388 coreconfigitem(
       
  2389     b'ui',
       
  2390     b'_usedassubrepo',
       
  2391     default=False,
       
  2392 )
       
  2393 coreconfigitem(
       
  2394     b'ui',
       
  2395     b'allowemptycommit',
       
  2396     default=False,
       
  2397 )
       
  2398 coreconfigitem(
       
  2399     b'ui',
       
  2400     b'archivemeta',
       
  2401     default=True,
       
  2402 )
       
  2403 coreconfigitem(
       
  2404     b'ui',
       
  2405     b'askusername',
       
  2406     default=False,
       
  2407 )
       
  2408 coreconfigitem(
       
  2409     b'ui',
       
  2410     b'available-memory',
       
  2411     default=None,
       
  2412 )
       
  2413 
       
  2414 coreconfigitem(
       
  2415     b'ui',
       
  2416     b'clonebundlefallback',
       
  2417     default=False,
       
  2418 )
       
  2419 coreconfigitem(
       
  2420     b'ui',
       
  2421     b'clonebundleprefers',
       
  2422     default=list,
       
  2423 )
       
  2424 coreconfigitem(
       
  2425     b'ui',
       
  2426     b'clonebundles',
       
  2427     default=True,
       
  2428 )
       
  2429 coreconfigitem(
       
  2430     b'ui',
       
  2431     b'color',
       
  2432     default=b'auto',
       
  2433 )
       
  2434 coreconfigitem(
       
  2435     b'ui',
       
  2436     b'commitsubrepos',
       
  2437     default=False,
       
  2438 )
       
  2439 coreconfigitem(
       
  2440     b'ui',
       
  2441     b'debug',
       
  2442     default=False,
       
  2443 )
       
  2444 coreconfigitem(
       
  2445     b'ui',
       
  2446     b'debugger',
       
  2447     default=None,
       
  2448 )
       
  2449 coreconfigitem(
       
  2450     b'ui',
       
  2451     b'editor',
       
  2452     default=dynamicdefault,
       
  2453 )
       
  2454 coreconfigitem(
       
  2455     b'ui',
       
  2456     b'detailed-exit-code',
       
  2457     default=False,
       
  2458     experimental=True,
       
  2459 )
       
  2460 coreconfigitem(
       
  2461     b'ui',
       
  2462     b'fallbackencoding',
       
  2463     default=None,
       
  2464 )
       
  2465 coreconfigitem(
       
  2466     b'ui',
       
  2467     b'forcecwd',
       
  2468     default=None,
       
  2469 )
       
  2470 coreconfigitem(
       
  2471     b'ui',
       
  2472     b'forcemerge',
       
  2473     default=None,
       
  2474 )
       
  2475 coreconfigitem(
       
  2476     b'ui',
       
  2477     b'formatdebug',
       
  2478     default=False,
       
  2479 )
       
  2480 coreconfigitem(
       
  2481     b'ui',
       
  2482     b'formatjson',
       
  2483     default=False,
       
  2484 )
       
  2485 coreconfigitem(
       
  2486     b'ui',
       
  2487     b'formatted',
       
  2488     default=None,
       
  2489 )
       
  2490 coreconfigitem(
       
  2491     b'ui',
       
  2492     b'interactive',
       
  2493     default=None,
       
  2494 )
       
  2495 coreconfigitem(
       
  2496     b'ui',
       
  2497     b'interface',
       
  2498     default=None,
       
  2499 )
       
  2500 coreconfigitem(
       
  2501     b'ui',
       
  2502     b'interface.chunkselector',
       
  2503     default=None,
       
  2504 )
       
  2505 coreconfigitem(
       
  2506     b'ui',
       
  2507     b'large-file-limit',
       
  2508     default=10 * (2 ** 20),
       
  2509 )
       
  2510 coreconfigitem(
       
  2511     b'ui',
       
  2512     b'logblockedtimes',
       
  2513     default=False,
       
  2514 )
       
  2515 coreconfigitem(
       
  2516     b'ui',
       
  2517     b'merge',
       
  2518     default=None,
       
  2519 )
       
  2520 coreconfigitem(
       
  2521     b'ui',
       
  2522     b'mergemarkers',
       
  2523     default=b'basic',
       
  2524 )
       
  2525 coreconfigitem(
       
  2526     b'ui',
       
  2527     b'message-output',
       
  2528     default=b'stdio',
       
  2529 )
       
  2530 coreconfigitem(
       
  2531     b'ui',
       
  2532     b'nontty',
       
  2533     default=False,
       
  2534 )
       
  2535 coreconfigitem(
       
  2536     b'ui',
       
  2537     b'origbackuppath',
       
  2538     default=None,
       
  2539 )
       
  2540 coreconfigitem(
       
  2541     b'ui',
       
  2542     b'paginate',
       
  2543     default=True,
       
  2544 )
       
  2545 coreconfigitem(
       
  2546     b'ui',
       
  2547     b'patch',
       
  2548     default=None,
       
  2549 )
       
  2550 coreconfigitem(
       
  2551     b'ui',
       
  2552     b'portablefilenames',
       
  2553     default=b'warn',
       
  2554 )
       
  2555 coreconfigitem(
       
  2556     b'ui',
       
  2557     b'promptecho',
       
  2558     default=False,
       
  2559 )
       
  2560 coreconfigitem(
       
  2561     b'ui',
       
  2562     b'quiet',
       
  2563     default=False,
       
  2564 )
       
  2565 coreconfigitem(
       
  2566     b'ui',
       
  2567     b'quietbookmarkmove',
       
  2568     default=False,
       
  2569 )
       
  2570 coreconfigitem(
       
  2571     b'ui',
       
  2572     b'relative-paths',
       
  2573     default=b'legacy',
       
  2574 )
       
  2575 coreconfigitem(
       
  2576     b'ui',
       
  2577     b'remotecmd',
       
  2578     default=b'hg',
       
  2579 )
       
  2580 coreconfigitem(
       
  2581     b'ui',
       
  2582     b'report_untrusted',
       
  2583     default=True,
       
  2584 )
       
  2585 coreconfigitem(
       
  2586     b'ui',
       
  2587     b'rollback',
       
  2588     default=True,
       
  2589 )
       
  2590 coreconfigitem(
       
  2591     b'ui',
       
  2592     b'signal-safe-lock',
       
  2593     default=True,
       
  2594 )
       
  2595 coreconfigitem(
       
  2596     b'ui',
       
  2597     b'slash',
       
  2598     default=False,
       
  2599 )
       
  2600 coreconfigitem(
       
  2601     b'ui',
       
  2602     b'ssh',
       
  2603     default=b'ssh',
       
  2604 )
       
  2605 coreconfigitem(
       
  2606     b'ui',
       
  2607     b'ssherrorhint',
       
  2608     default=None,
       
  2609 )
       
  2610 coreconfigitem(
       
  2611     b'ui',
       
  2612     b'statuscopies',
       
  2613     default=False,
       
  2614 )
       
  2615 coreconfigitem(
       
  2616     b'ui',
       
  2617     b'strict',
       
  2618     default=False,
       
  2619 )
       
  2620 coreconfigitem(
       
  2621     b'ui',
       
  2622     b'style',
       
  2623     default=b'',
       
  2624 )
       
  2625 coreconfigitem(
       
  2626     b'ui',
       
  2627     b'supportcontact',
       
  2628     default=None,
       
  2629 )
       
  2630 coreconfigitem(
       
  2631     b'ui',
       
  2632     b'textwidth',
       
  2633     default=78,
       
  2634 )
       
  2635 coreconfigitem(
       
  2636     b'ui',
       
  2637     b'timeout',
       
  2638     default=b'600',
       
  2639 )
       
  2640 coreconfigitem(
       
  2641     b'ui',
       
  2642     b'timeout.warn',
       
  2643     default=0,
       
  2644 )
       
  2645 coreconfigitem(
       
  2646     b'ui',
       
  2647     b'timestamp-output',
       
  2648     default=False,
       
  2649 )
       
  2650 coreconfigitem(
       
  2651     b'ui',
       
  2652     b'traceback',
       
  2653     default=False,
       
  2654 )
       
  2655 coreconfigitem(
       
  2656     b'ui',
       
  2657     b'tweakdefaults',
       
  2658     default=False,
       
  2659 )
       
  2660 coreconfigitem(b'ui', b'username', alias=[(b'ui', b'user')])
       
  2661 coreconfigitem(
       
  2662     b'ui',
       
  2663     b'verbose',
       
  2664     default=False,
       
  2665 )
       
  2666 coreconfigitem(
       
  2667     b'verify',
       
  2668     b'skipflags',
       
  2669     default=0,
       
  2670 )
       
  2671 coreconfigitem(
       
  2672     b'web',
       
  2673     b'allowbz2',
       
  2674     default=False,
       
  2675 )
       
  2676 coreconfigitem(
       
  2677     b'web',
       
  2678     b'allowgz',
       
  2679     default=False,
       
  2680 )
       
  2681 coreconfigitem(
       
  2682     b'web',
       
  2683     b'allow-pull',
       
  2684     alias=[(b'web', b'allowpull')],
       
  2685     default=True,
       
  2686 )
       
  2687 coreconfigitem(
       
  2688     b'web',
       
  2689     b'allow-push',
       
  2690     alias=[(b'web', b'allow_push')],
       
  2691     default=list,
       
  2692 )
       
  2693 coreconfigitem(
       
  2694     b'web',
       
  2695     b'allowzip',
       
  2696     default=False,
       
  2697 )
       
  2698 coreconfigitem(
       
  2699     b'web',
       
  2700     b'archivesubrepos',
       
  2701     default=False,
       
  2702 )
       
  2703 coreconfigitem(
       
  2704     b'web',
       
  2705     b'cache',
       
  2706     default=True,
       
  2707 )
       
  2708 coreconfigitem(
       
  2709     b'web',
       
  2710     b'comparisoncontext',
       
  2711     default=5,
       
  2712 )
       
  2713 coreconfigitem(
       
  2714     b'web',
       
  2715     b'contact',
       
  2716     default=None,
       
  2717 )
       
  2718 coreconfigitem(
       
  2719     b'web',
       
  2720     b'deny_push',
       
  2721     default=list,
       
  2722 )
       
  2723 coreconfigitem(
       
  2724     b'web',
       
  2725     b'guessmime',
       
  2726     default=False,
       
  2727 )
       
  2728 coreconfigitem(
       
  2729     b'web',
       
  2730     b'hidden',
       
  2731     default=False,
       
  2732 )
       
  2733 coreconfigitem(
       
  2734     b'web',
       
  2735     b'labels',
       
  2736     default=list,
       
  2737 )
       
  2738 coreconfigitem(
       
  2739     b'web',
       
  2740     b'logoimg',
       
  2741     default=b'hglogo.png',
       
  2742 )
       
  2743 coreconfigitem(
       
  2744     b'web',
       
  2745     b'logourl',
       
  2746     default=b'https://mercurial-scm.org/',
       
  2747 )
       
  2748 coreconfigitem(
       
  2749     b'web',
       
  2750     b'accesslog',
       
  2751     default=b'-',
       
  2752 )
       
  2753 coreconfigitem(
       
  2754     b'web',
       
  2755     b'address',
       
  2756     default=b'',
       
  2757 )
       
  2758 coreconfigitem(
       
  2759     b'web',
       
  2760     b'allow-archive',
       
  2761     alias=[(b'web', b'allow_archive')],
       
  2762     default=list,
       
  2763 )
       
  2764 coreconfigitem(
       
  2765     b'web',
       
  2766     b'allow_read',
       
  2767     default=list,
       
  2768 )
       
  2769 coreconfigitem(
       
  2770     b'web',
       
  2771     b'baseurl',
       
  2772     default=None,
       
  2773 )
       
  2774 coreconfigitem(
       
  2775     b'web',
       
  2776     b'cacerts',
       
  2777     default=None,
       
  2778 )
       
  2779 coreconfigitem(
       
  2780     b'web',
       
  2781     b'certificate',
       
  2782     default=None,
       
  2783 )
       
  2784 coreconfigitem(
       
  2785     b'web',
       
  2786     b'collapse',
       
  2787     default=False,
       
  2788 )
       
  2789 coreconfigitem(
       
  2790     b'web',
       
  2791     b'csp',
       
  2792     default=None,
       
  2793 )
       
  2794 coreconfigitem(
       
  2795     b'web',
       
  2796     b'deny_read',
       
  2797     default=list,
       
  2798 )
       
  2799 coreconfigitem(
       
  2800     b'web',
       
  2801     b'descend',
       
  2802     default=True,
       
  2803 )
       
  2804 coreconfigitem(
       
  2805     b'web',
       
  2806     b'description',
       
  2807     default=b"",
       
  2808 )
       
  2809 coreconfigitem(
       
  2810     b'web',
       
  2811     b'encoding',
       
  2812     default=lambda: encoding.encoding,
       
  2813 )
       
  2814 coreconfigitem(
       
  2815     b'web',
       
  2816     b'errorlog',
       
  2817     default=b'-',
       
  2818 )
       
  2819 coreconfigitem(
       
  2820     b'web',
       
  2821     b'ipv6',
       
  2822     default=False,
       
  2823 )
       
  2824 coreconfigitem(
       
  2825     b'web',
       
  2826     b'maxchanges',
       
  2827     default=10,
       
  2828 )
       
  2829 coreconfigitem(
       
  2830     b'web',
       
  2831     b'maxfiles',
       
  2832     default=10,
       
  2833 )
       
  2834 coreconfigitem(
       
  2835     b'web',
       
  2836     b'maxshortchanges',
       
  2837     default=60,
       
  2838 )
       
  2839 coreconfigitem(
       
  2840     b'web',
       
  2841     b'motd',
       
  2842     default=b'',
       
  2843 )
       
  2844 coreconfigitem(
       
  2845     b'web',
       
  2846     b'name',
       
  2847     default=dynamicdefault,
       
  2848 )
       
  2849 coreconfigitem(
       
  2850     b'web',
       
  2851     b'port',
       
  2852     default=8000,
       
  2853 )
       
  2854 coreconfigitem(
       
  2855     b'web',
       
  2856     b'prefix',
       
  2857     default=b'',
       
  2858 )
       
  2859 coreconfigitem(
       
  2860     b'web',
       
  2861     b'push_ssl',
       
  2862     default=True,
       
  2863 )
       
  2864 coreconfigitem(
       
  2865     b'web',
       
  2866     b'refreshinterval',
       
  2867     default=20,
       
  2868 )
       
  2869 coreconfigitem(
       
  2870     b'web',
       
  2871     b'server-header',
       
  2872     default=None,
       
  2873 )
       
  2874 coreconfigitem(
       
  2875     b'web',
       
  2876     b'static',
       
  2877     default=None,
       
  2878 )
       
  2879 coreconfigitem(
       
  2880     b'web',
       
  2881     b'staticurl',
       
  2882     default=None,
       
  2883 )
       
  2884 coreconfigitem(
       
  2885     b'web',
       
  2886     b'stripes',
       
  2887     default=1,
       
  2888 )
       
  2889 coreconfigitem(
       
  2890     b'web',
       
  2891     b'style',
       
  2892     default=b'paper',
       
  2893 )
       
  2894 coreconfigitem(
       
  2895     b'web',
       
  2896     b'templates',
       
  2897     default=None,
       
  2898 )
       
  2899 coreconfigitem(
       
  2900     b'web',
       
  2901     b'view',
       
  2902     default=b'served',
       
  2903     experimental=True,
       
  2904 )
       
  2905 coreconfigitem(
       
  2906     b'worker',
       
  2907     b'backgroundclose',
       
  2908     default=dynamicdefault,
       
  2909 )
       
  2910 # Windows defaults to a limit of 512 open files. A buffer of 128
       
  2911 # should give us enough headway.
       
  2912 coreconfigitem(
       
  2913     b'worker',
       
  2914     b'backgroundclosemaxqueue',
       
  2915     default=384,
       
  2916 )
       
  2917 coreconfigitem(
       
  2918     b'worker',
       
  2919     b'backgroundcloseminfilecount',
       
  2920     default=2048,
       
  2921 )
       
  2922 coreconfigitem(
       
  2923     b'worker',
       
  2924     b'backgroundclosethreadcount',
       
  2925     default=4,
       
  2926 )
       
  2927 coreconfigitem(
       
  2928     b'worker',
       
  2929     b'enabled',
       
  2930     default=True,
       
  2931 )
       
  2932 coreconfigitem(
       
  2933     b'worker',
       
  2934     b'numcpus',
       
  2935     default=None,
       
  2936 )
       
  2937 
       
  2938 # Rebase related configuration moved to core because other extension are doing
       
  2939 # strange things. For example, shelve import the extensions to reuse some bit
       
  2940 # without formally loading it.
       
  2941 coreconfigitem(
       
  2942     b'commands',
       
  2943     b'rebase.requiredest',
       
  2944     default=False,
       
  2945 )
       
  2946 coreconfigitem(
       
  2947     b'experimental',
       
  2948     b'rebaseskipobsolete',
       
  2949     default=True,
       
  2950 )
       
  2951 coreconfigitem(
       
  2952     b'rebase',
       
  2953     b'singletransaction',
       
  2954     default=False,
       
  2955 )
       
  2956 coreconfigitem(
       
  2957     b'rebase',
       
  2958     b'experimental.inmemory',
       
  2959     default=False,
       
  2960 )
       
  2961 
       
  2962 # This setting controls creation of a rebase_source extra field
       
  2963 # during rebase. When False, no such field is created. This is
       
  2964 # useful eg for incrementally converting changesets and then
       
  2965 # rebasing them onto an existing repo.
       
  2966 # WARNING: this is an advanced setting reserved for people who know
       
  2967 # exactly what they are doing. Misuse of this setting can easily
       
  2968 # result in obsmarker cycles and a vivid headache.
       
  2969 coreconfigitem(
       
  2970     b'rebase',
       
  2971     b'store-source',
       
  2972     default=True,
       
  2973     experimental=True,
       
  2974 )