configitems.py
665 lines
| 14.2 KiB
| text/x-python
|
PythonLexer
/ mercurial / configitems.py
r32983 | # configitems.py - centralized declaration of configuration option | |||
# | ||||
# Copyright 2017 Pierre-Yves David <pierre-yves.david@octobus.net> | ||||
# | ||||
# This software may be used and distributed according to the terms of the | ||||
# GNU General Public License version 2 or any later version. | ||||
from __future__ import absolute_import | ||||
r33126 | import functools | |||
r32984 | from . import ( | |||
Boris Feld
|
r34236 | encoding, | ||
r32984 | error, | |||
) | ||||
r33127 | def loadconfigtable(ui, extname, configtable): | |||
"""update config item known to the ui with the extension ones""" | ||||
for section, items in configtable.items(): | ||||
r33128 | knownitems = ui._knownconfig.setdefault(section, {}) | |||
knownkeys = set(knownitems) | ||||
newkeys = set(items) | ||||
for key in sorted(knownkeys & newkeys): | ||||
msg = "extension '%s' overwrite config item '%s.%s'" | ||||
msg %= (extname, section, key) | ||||
ui.develwarn(msg, config='warn-config') | ||||
knownitems.update(items) | ||||
r33127 | ||||
r32983 | class configitem(object): | |||
"""represent a known config item | ||||
:section: the official config section where to find this item, | ||||
:name: the official name within the section, | ||||
:default: default value for this item, | ||||
David Demelier
|
r33329 | :alias: optional list of tuples as alternatives. | ||
r32983 | """ | |||
David Demelier
|
r33329 | def __init__(self, section, name, default=None, alias=()): | ||
r32983 | self.section = section | |||
self.name = name | ||||
self.default = default | ||||
David Demelier
|
r33329 | self.alias = list(alias) | ||
r32984 | ||||
coreitems = {} | ||||
r33126 | def _register(configtable, *args, **kwargs): | |||
r32984 | item = configitem(*args, **kwargs) | |||
r33126 | section = configtable.setdefault(item.section, {}) | |||
r32984 | if item.name in section: | |||
msg = "duplicated config item registration for '%s.%s'" | ||||
raise error.ProgrammingError(msg % (item.section, item.name)) | ||||
section[item.name] = item | ||||
r32986 | ||||
Boris Feld
|
r33471 | # special value for case where the default is derived from other values | ||
dynamicdefault = object() | ||||
r32986 | # Registering actual config items | |||
r33126 | def getitemregister(configtable): | |||
return functools.partial(_register, configtable) | ||||
coreconfigitem = getitemregister(coreitems) | ||||
r33177 | coreconfigitem('auth', 'cookiefile', | |||
default=None, | ||||
) | ||||
r33178 | # bookmarks.pushing: internal hack for discovery | |||
coreconfigitem('bookmarks', 'pushing', | ||||
default=list, | ||||
) | ||||
r33179 | # bundle.mainreporoot: internal hack for bundlerepo | |||
coreconfigitem('bundle', 'mainreporoot', | ||||
default='', | ||||
) | ||||
r33180 | # bundle.reorder: experimental config | |||
coreconfigitem('bundle', 'reorder', | ||||
default='auto', | ||||
) | ||||
Jun Wu
|
r33499 | coreconfigitem('censor', 'policy', | ||
default='abort', | ||||
) | ||||
coreconfigitem('chgserver', 'idletimeout', | ||||
default=3600, | ||||
) | ||||
coreconfigitem('chgserver', 'skiphash', | ||||
default=False, | ||||
) | ||||
coreconfigitem('cmdserver', 'log', | ||||
default=None, | ||||
) | ||||
r33176 | coreconfigitem('color', 'mode', | |||
default='auto', | ||||
) | ||||
Boris Feld
|
r33472 | coreconfigitem('color', 'pagermode', | ||
default=dynamicdefault, | ||||
) | ||||
Jun Wu
|
r33499 | coreconfigitem('commands', 'status.relative', | ||
default=False, | ||||
) | ||||
Pulkit Goyal
|
r33766 | coreconfigitem('commands', 'status.skipstates', | ||
default=[], | ||||
) | ||||
coreconfigitem('commands', 'status.verbose', | ||||
default=False, | ||||
) | ||||
Jun Wu
|
r33499 | coreconfigitem('commands', 'update.requiredest', | ||
default=False, | ||||
) | ||||
r33159 | coreconfigitem('devel', 'all-warnings', | |||
default=False, | ||||
) | ||||
r33160 | coreconfigitem('devel', 'bundle2.debug', | |||
default=False, | ||||
) | ||||
r33161 | coreconfigitem('devel', 'check-locks', | |||
default=False, | ||||
) | ||||
r33162 | coreconfigitem('devel', 'check-relroot', | |||
default=False, | ||||
) | ||||
Jun Wu
|
r33499 | coreconfigitem('devel', 'default-date', | ||
default=None, | ||||
) | ||||
coreconfigitem('devel', 'deprec-warn', | ||||
default=False, | ||||
) | ||||
r33163 | coreconfigitem('devel', 'disableloaddefaultcerts', | |||
default=False, | ||||
) | ||||
r33181 | coreconfigitem('devel', 'legacy.exchange', | |||
default=list, | ||||
) | ||||
r33164 | coreconfigitem('devel', 'servercafile', | |||
default='', | ||||
) | ||||
r33165 | coreconfigitem('devel', 'serverexactprotocol', | |||
default='', | ||||
) | ||||
r33166 | coreconfigitem('devel', 'serverrequirecert', | |||
r33174 | default=False, | |||
r33166 | ) | |||
r33167 | coreconfigitem('devel', 'strip-obsmarkers', | |||
default=True, | ||||
) | ||||
Jun Wu
|
r33499 | coreconfigitem('email', 'charsets', | ||
default=list, | ||||
) | ||||
coreconfigitem('email', 'method', | ||||
default='smtp', | ||||
) | ||||
coreconfigitem('experimental', 'bundle-phases', | ||||
default=False, | ||||
) | ||||
coreconfigitem('experimental', 'bundle2-advertise', | ||||
default=True, | ||||
) | ||||
coreconfigitem('experimental', 'bundle2-output-capture', | ||||
default=False, | ||||
) | ||||
coreconfigitem('experimental', 'bundle2.pushback', | ||||
default=False, | ||||
) | ||||
coreconfigitem('experimental', 'bundle2lazylocking', | ||||
default=False, | ||||
) | ||||
coreconfigitem('experimental', 'bundlecomplevel', | ||||
default=None, | ||||
) | ||||
coreconfigitem('experimental', 'changegroup3', | ||||
default=False, | ||||
) | ||||
coreconfigitem('experimental', 'clientcompressionengines', | ||||
default=list, | ||||
) | ||||
Pulkit Goyal
|
r34079 | coreconfigitem('experimental', 'copytrace', | ||
default='on', | ||||
) | ||||
Jun Wu
|
r33499 | coreconfigitem('experimental', 'crecordtest', | ||
default=None, | ||||
) | ||||
coreconfigitem('experimental', 'editortmpinhg', | ||||
default=False, | ||||
) | ||||
Boris Feld
|
r33767 | coreconfigitem('experimental', 'stabilization', | ||
Jun Wu
|
r33499 | default=list, | ||
Boris Feld
|
r33767 | alias=[('experimental', 'evolution')], | ||
Jun Wu
|
r33499 | ) | ||
Boris Feld
|
r33767 | coreconfigitem('experimental', 'stabilization.bundle-obsmarker', | ||
Jun Wu
|
r33499 | default=False, | ||
Boris Feld
|
r33767 | alias=[('experimental', 'evolution.bundle-obsmarker')], | ||
Jun Wu
|
r33499 | ) | ||
Boris Feld
|
r33767 | coreconfigitem('experimental', 'stabilization.track-operation', | ||
Jun Wu
|
r33499 | default=False, | ||
Boris Feld
|
r33767 | alias=[('experimental', 'evolution.track-operation')] | ||
Jun Wu
|
r33499 | ) | ||
coreconfigitem('experimental', 'exportableenviron', | ||||
default=list, | ||||
) | ||||
coreconfigitem('experimental', 'extendedheader.index', | ||||
default=None, | ||||
) | ||||
coreconfigitem('experimental', 'extendedheader.similarity', | ||||
default=False, | ||||
) | ||||
coreconfigitem('experimental', 'format.compression', | ||||
default='zlib', | ||||
) | ||||
coreconfigitem('experimental', 'graphshorten', | ||||
default=False, | ||||
) | ||||
coreconfigitem('experimental', 'hook-track-tags', | ||||
default=False, | ||||
) | ||||
coreconfigitem('experimental', 'httppostargs', | ||||
default=False, | ||||
) | ||||
coreconfigitem('experimental', 'manifestv2', | ||||
default=False, | ||||
) | ||||
coreconfigitem('experimental', 'mergedriver', | ||||
default=None, | ||||
) | ||||
coreconfigitem('experimental', 'obsmarkers-exchange-debug', | ||||
default=False, | ||||
) | ||||
Jun Wu
|
r34007 | coreconfigitem('experimental', 'rebase.multidest', | ||
default=False, | ||||
) | ||||
Jun Wu
|
r33499 | coreconfigitem('experimental', 'revertalternateinteractivemode', | ||
default=True, | ||||
) | ||||
coreconfigitem('experimental', 'revlogv2', | ||||
default=None, | ||||
) | ||||
coreconfigitem('experimental', 'spacemovesdown', | ||||
default=False, | ||||
) | ||||
coreconfigitem('experimental', 'treemanifest', | ||||
default=False, | ||||
) | ||||
coreconfigitem('experimental', 'updatecheck', | ||||
default=None, | ||||
) | ||||
r33232 | coreconfigitem('format', 'aggressivemergedeltas', | |||
default=False, | ||||
) | ||||
r33233 | coreconfigitem('format', 'chunkcachesize', | |||
default=None, | ||||
) | ||||
r33234 | coreconfigitem('format', 'dotencode', | |||
default=True, | ||||
) | ||||
r33235 | coreconfigitem('format', 'generaldelta', | |||
default=False, | ||||
) | ||||
r33236 | coreconfigitem('format', 'manifestcachesize', | |||
default=None, | ||||
) | ||||
r33237 | coreconfigitem('format', 'maxchainlen', | |||
default=None, | ||||
) | ||||
r33241 | coreconfigitem('format', 'obsstore-version', | |||
default=None, | ||||
) | ||||
r33242 | coreconfigitem('format', 'usefncache', | |||
default=True, | ||||
) | ||||
r33243 | coreconfigitem('format', 'usegeneraldelta', | |||
default=True, | ||||
) | ||||
r33244 | coreconfigitem('format', 'usestore', | |||
default=True, | ||||
) | ||||
r33214 | coreconfigitem('hostsecurity', 'ciphers', | |||
default=None, | ||||
) | ||||
r33215 | coreconfigitem('hostsecurity', 'disabletls10warning', | |||
default=False, | ||||
) | ||||
Jun Wu
|
r33499 | coreconfigitem('http_proxy', 'always', | ||
default=False, | ||||
) | ||||
coreconfigitem('http_proxy', 'host', | ||||
default=None, | ||||
) | ||||
coreconfigitem('http_proxy', 'no', | ||||
default=list, | ||||
) | ||||
coreconfigitem('http_proxy', 'passwd', | ||||
default=None, | ||||
) | ||||
coreconfigitem('http_proxy', 'user', | ||||
default=None, | ||||
) | ||||
coreconfigitem('merge', 'followcopies', | ||||
default=True, | ||||
) | ||||
coreconfigitem('pager', 'ignore', | ||||
default=list, | ||||
) | ||||
r33226 | coreconfigitem('patch', 'eol', | |||
default='strict', | ||||
) | ||||
r32988 | coreconfigitem('patch', 'fuzz', | |||
default=2, | ||||
) | ||||
Jun Wu
|
r33499 | coreconfigitem('paths', 'default', | ||
default=None, | ||||
) | ||||
coreconfigitem('paths', 'default-push', | ||||
default=None, | ||||
) | ||||
coreconfigitem('phases', 'checksubrepos', | ||||
default='follow', | ||||
) | ||||
coreconfigitem('phases', 'publish', | ||||
default=True, | ||||
) | ||||
coreconfigitem('profiling', 'enabled', | ||||
default=False, | ||||
) | ||||
coreconfigitem('profiling', 'format', | ||||
default='text', | ||||
) | ||||
coreconfigitem('profiling', 'freq', | ||||
default=1000, | ||||
) | ||||
coreconfigitem('profiling', 'limit', | ||||
default=30, | ||||
) | ||||
coreconfigitem('profiling', 'nested', | ||||
default=0, | ||||
) | ||||
coreconfigitem('profiling', 'sort', | ||||
default='inlinetime', | ||||
) | ||||
coreconfigitem('profiling', 'statformat', | ||||
default='hotpath', | ||||
) | ||||
r33245 | coreconfigitem('progress', 'assume-tty', | |||
default=False, | ||||
) | ||||
Jun Wu
|
r33499 | coreconfigitem('progress', 'changedelay', | ||
default=1, | ||||
) | ||||
r33246 | coreconfigitem('progress', 'clear-complete', | |||
default=True, | ||||
) | ||||
Jun Wu
|
r33499 | coreconfigitem('progress', 'debug', | ||
default=False, | ||||
) | ||||
coreconfigitem('progress', 'delay', | ||||
default=3, | ||||
) | ||||
coreconfigitem('progress', 'disable', | ||||
default=False, | ||||
) | ||||
r33247 | coreconfigitem('progress', 'estimate', | |||
default=2, | ||||
) | ||||
Jun Wu
|
r33499 | coreconfigitem('progress', 'refresh', | ||
default=0.1, | ||||
) | ||||
Boris Feld
|
r33473 | coreconfigitem('progress', 'width', | ||
default=dynamicdefault, | ||||
) | ||||
Pulkit Goyal
|
r33834 | coreconfigitem('push', 'pushvars.server', | ||
default=False, | ||||
) | ||||
r33216 | coreconfigitem('server', 'bundle1', | |||
default=True, | ||||
) | ||||
r33217 | coreconfigitem('server', 'bundle1gd', | |||
default=None, | ||||
) | ||||
r33218 | coreconfigitem('server', 'compressionengines', | |||
default=list, | ||||
) | ||||
r33219 | coreconfigitem('server', 'concurrent-push-mode', | |||
default='strict', | ||||
) | ||||
r33220 | coreconfigitem('server', 'disablefullbundle', | |||
default=False, | ||||
) | ||||
r33221 | coreconfigitem('server', 'maxhttpheaderlen', | |||
default=1024, | ||||
) | ||||
r33222 | coreconfigitem('server', 'preferuncompressed', | |||
default=False, | ||||
) | ||||
Jun Wu
|
r33499 | coreconfigitem('server', 'uncompressed', | ||
default=True, | ||||
) | ||||
r33223 | coreconfigitem('server', 'uncompressedallowsecret', | |||
default=False, | ||||
) | ||||
r33224 | coreconfigitem('server', 'validate', | |||
default=False, | ||||
) | ||||
r33225 | coreconfigitem('server', 'zliblevel', | |||
default=-1, | ||||
) | ||||
Jun Wu
|
r33499 | coreconfigitem('smtp', 'host', | ||
default=None, | ||||
) | ||||
coreconfigitem('smtp', 'local_hostname', | ||||
default=None, | ||||
) | ||||
coreconfigitem('smtp', 'password', | ||||
default=None, | ||||
) | ||||
coreconfigitem('smtp', 'tls', | ||||
default='none', | ||||
) | ||||
coreconfigitem('smtp', 'username', | ||||
default=None, | ||||
) | ||||
coreconfigitem('sparse', 'missingwarning', | ||||
default=True, | ||||
) | ||||
coreconfigitem('trusted', 'groups', | ||||
default=list, | ||||
) | ||||
coreconfigitem('trusted', 'users', | ||||
default=list, | ||||
) | ||||
coreconfigitem('ui', '_usedassubrepo', | ||||
default=False, | ||||
) | ||||
coreconfigitem('ui', 'allowemptycommit', | ||||
default=False, | ||||
) | ||||
coreconfigitem('ui', 'archivemeta', | ||||
default=True, | ||||
) | ||||
coreconfigitem('ui', 'askusername', | ||||
default=False, | ||||
) | ||||
coreconfigitem('ui', 'clonebundlefallback', | ||||
default=False, | ||||
) | ||||
r32989 | coreconfigitem('ui', 'clonebundleprefers', | |||
r33151 | default=list, | |||
r32989 | ) | |||
Jun Wu
|
r33499 | coreconfigitem('ui', 'clonebundles', | ||
default=True, | ||||
) | ||||
Boris Feld
|
r33522 | coreconfigitem('ui', 'color', | ||
default='auto', | ||||
) | ||||
Jun Wu
|
r33499 | coreconfigitem('ui', 'commitsubrepos', | ||
default=False, | ||||
) | ||||
coreconfigitem('ui', 'debug', | ||||
default=False, | ||||
) | ||||
coreconfigitem('ui', 'debugger', | ||||
default=None, | ||||
) | ||||
Boris Feld
|
r33519 | coreconfigitem('ui', 'fallbackencoding', | ||
default=None, | ||||
) | ||||
Boris Feld
|
r33520 | coreconfigitem('ui', 'forcecwd', | ||
default=None, | ||||
) | ||||
Jun Wu
|
r33499 | coreconfigitem('ui', 'forcemerge', | ||
default=None, | ||||
) | ||||
coreconfigitem('ui', 'formatdebug', | ||||
default=False, | ||||
) | ||||
coreconfigitem('ui', 'formatjson', | ||||
default=False, | ||||
) | ||||
coreconfigitem('ui', 'formatted', | ||||
default=None, | ||||
) | ||||
coreconfigitem('ui', 'graphnodetemplate', | ||||
default=None, | ||||
) | ||||
coreconfigitem('ui', 'http2debuglevel', | ||||
default=None, | ||||
) | ||||
r33061 | coreconfigitem('ui', 'interactive', | |||
default=None, | ||||
) | ||||
Jun Wu
|
r33499 | coreconfigitem('ui', 'interface', | ||
default=None, | ||||
) | ||||
coreconfigitem('ui', 'logblockedtimes', | ||||
default=False, | ||||
) | ||||
coreconfigitem('ui', 'logtemplate', | ||||
default=None, | ||||
) | ||||
coreconfigitem('ui', 'merge', | ||||
default=None, | ||||
) | ||||
coreconfigitem('ui', 'mergemarkers', | ||||
default='basic', | ||||
) | ||||
Boris Feld
|
r33523 | coreconfigitem('ui', 'mergemarkertemplate', | ||
default=('{node|short} ' | ||||
'{ifeq(tags, "tip", "", ' | ||||
'ifeq(tags, "", "", "{tags} "))}' | ||||
'{if(bookmarks, "{bookmarks} ")}' | ||||
'{ifeq(branch, "default", "", "{branch} ")}' | ||||
'- {author|user}: {desc|firstline}') | ||||
) | ||||
Jun Wu
|
r33499 | coreconfigitem('ui', 'nontty', | ||
default=False, | ||||
) | ||||
coreconfigitem('ui', 'origbackuppath', | ||||
default=None, | ||||
) | ||||
coreconfigitem('ui', 'paginate', | ||||
default=True, | ||||
) | ||||
coreconfigitem('ui', 'patch', | ||||
default=None, | ||||
) | ||||
coreconfigitem('ui', 'portablefilenames', | ||||
default='warn', | ||||
) | ||||
coreconfigitem('ui', 'promptecho', | ||||
default=False, | ||||
) | ||||
r32986 | coreconfigitem('ui', 'quiet', | |||
default=False, | ||||
) | ||||
Jun Wu
|
r33499 | coreconfigitem('ui', 'quietbookmarkmove', | ||
default=False, | ||||
) | ||||
coreconfigitem('ui', 'remotecmd', | ||||
default='hg', | ||||
) | ||||
coreconfigitem('ui', 'report_untrusted', | ||||
default=True, | ||||
) | ||||
coreconfigitem('ui', 'rollback', | ||||
default=True, | ||||
) | ||||
coreconfigitem('ui', 'slash', | ||||
default=False, | ||||
) | ||||
coreconfigitem('ui', 'ssh', | ||||
default='ssh', | ||||
) | ||||
coreconfigitem('ui', 'statuscopies', | ||||
default=False, | ||||
) | ||||
coreconfigitem('ui', 'strict', | ||||
default=False, | ||||
) | ||||
coreconfigitem('ui', 'style', | ||||
default='', | ||||
) | ||||
coreconfigitem('ui', 'supportcontact', | ||||
default=None, | ||||
) | ||||
coreconfigitem('ui', 'textwidth', | ||||
default=78, | ||||
) | ||||
coreconfigitem('ui', 'timeout', | ||||
default='600', | ||||
) | ||||
coreconfigitem('ui', 'traceback', | ||||
default=False, | ||||
) | ||||
coreconfigitem('ui', 'tweakdefaults', | ||||
default=False, | ||||
) | ||||
coreconfigitem('ui', 'usehttp2', | ||||
default=False, | ||||
) | ||||
David Demelier
|
r33329 | coreconfigitem('ui', 'username', | ||
alias=[('ui', 'user')] | ||||
) | ||||
Jun Wu
|
r33499 | coreconfigitem('ui', 'verbose', | ||
default=False, | ||||
) | ||||
coreconfigitem('verify', 'skipflags', | ||||
default=None, | ||||
) | ||||
Boris Feld
|
r34224 | coreconfigitem('web', 'accesslog', | ||
default='-', | ||||
) | ||||
Boris Feld
|
r34225 | coreconfigitem('web', 'address', | ||
default='', | ||||
) | ||||
Boris Feld
|
r34226 | coreconfigitem('web', 'allow_archive', | ||
default=list, | ||||
) | ||||
Boris Feld
|
r34227 | coreconfigitem('web', 'allow_read', | ||
default=list, | ||||
) | ||||
Boris Feld
|
r34228 | coreconfigitem('web', 'baseurl', | ||
default=None, | ||||
) | ||||
Boris Feld
|
r34229 | coreconfigitem('web', 'cacerts', | ||
default=None, | ||||
) | ||||
Boris Feld
|
r34230 | coreconfigitem('web', 'certificate', | ||
default=None, | ||||
) | ||||
Boris Feld
|
r34231 | coreconfigitem('web', 'collapse', | ||
default=False, | ||||
) | ||||
Boris Feld
|
r34232 | coreconfigitem('web', 'csp', | ||
default=None, | ||||
) | ||||
Boris Feld
|
r34233 | coreconfigitem('web', 'deny_read', | ||
default=list, | ||||
) | ||||
Boris Feld
|
r34234 | coreconfigitem('web', 'descend', | ||
default=True, | ||||
) | ||||
Boris Feld
|
r34235 | coreconfigitem('web', 'description', | ||
default="", | ||||
) | ||||
Boris Feld
|
r34236 | coreconfigitem('web', 'encoding', | ||
default=lambda: encoding.encoding, | ||||
) | ||||
Boris Feld
|
r34237 | coreconfigitem('web', 'errorlog', | ||
default='-', | ||||
) | ||||
Boris Feld
|
r34238 | coreconfigitem('web', 'ipv6', | ||
default=False, | ||||
) | ||||
Boris Feld
|
r34239 | coreconfigitem('web', 'port', | ||
default=8000, | ||||
) | ||||
Boris Feld
|
r34240 | coreconfigitem('web', 'prefix', | ||
default='', | ||||
) | ||||
Boris Feld
|
r34241 | coreconfigitem('web', 'refreshinterval', | ||
default=20, | ||||
) | ||||
Boris Feld
|
r34242 | coreconfigitem('web', 'stripes', | ||
default=1, | ||||
) | ||||
Boris Feld
|
r34243 | coreconfigitem('web', 'style', | ||
default='paper', | ||||
) | ||||
Boris Feld
|
r34244 | coreconfigitem('web', 'templates', | ||
default=None, | ||||
) | ||||
Boris Feld
|
r33474 | coreconfigitem('worker', 'backgroundclose', | ||
default=dynamicdefault, | ||||
) | ||||
r33231 | # Windows defaults to a limit of 512 open files. A buffer of 128 | |||
# should give us enough headway. | ||||
r33227 | coreconfigitem('worker', 'backgroundclosemaxqueue', | |||
default=384, | ||||
) | ||||
r33228 | coreconfigitem('worker', 'backgroundcloseminfilecount', | |||
default=2048, | ||||
) | ||||
r33229 | coreconfigitem('worker', 'backgroundclosethreadcount', | |||
default=4, | ||||
) | ||||
r33230 | coreconfigitem('worker', 'numcpus', | |||
default=None, | ||||
) | ||||