# configitems.toml - centralized declaration of configuration options
#
# This file contains declarations of the core Mercurial configuration options.
#
# # Structure
#
# items: array of config items
# templates: mapping of template name to template declaration
# template-applications: array of template applications
#
# # Elements
#
# ## Item
#
# Declares a core Mercurial option.
#
# - section: string (required)
# - name: string (required)
# - default-type: boolean, changes how `default` is read
# - default: any
# - generic: boolean
# - priority: integer, only if `generic` is true
# - alias: list of 2-tuples of strings
# - experimental: boolean
# - documentation: string
# - in_core_extension: string
#
# ## Template
#
# Declares a group of options to be re-used for multiple sections.
#
# - all the same fields as `Item`, except `section` and `name`
# - `suffix` (string, required)
#
# ## Template applications
#
# Uses a `Template` to instanciate its options in a given section.
#
# - template: string (required, must match a `Template` name)
# - section: string (required)

[[items]]
section = "alias"
name = ".*"
default-type = "dynamic"
generic = true

[[items]]
section = "auth"
name = "cookiefile"

# bookmarks.pushing: internal hack for discovery
[[items]]
section = "bookmarks"
name = "pushing"
default-type = "list_type"

# bundle.mainreporoot: internal hack for bundlerepo
[[items]]
section = "bundle"
name = "mainreporoot"
default = ""

[[items]]
section = "censor"
name = "policy"
default = "abort"
experimental = true

[[items]]
section = "chgserver"
name = "idletimeout"
default = 3600

[[items]]
section = "chgserver"
name = "skiphash"
default = false

[[items]]
section = "cmdserver"
name = "log"

[[items]]
section = "cmdserver"
name = "max-log-files"
default = 7

[[items]]
section = "cmdserver"
name = "max-log-size"
default = "1 MB"

[[items]]
section = "cmdserver"
name = "max-repo-cache"
default = 0
experimental = true

[[items]]
section = "cmdserver"
name = "message-encodings"
default-type = "list_type"

[[items]]
section = "cmdserver"
name = "shutdown-on-interrupt"
default = true

[[items]]
section = "cmdserver"
name = "track-log"
default-type = "lambda"
default = [ "chgserver", "cmdserver", "repocache",]

[[items]]
section = "color"
name = ".*"
generic = true

[[items]]
section = "color"
name = "mode"
default = "auto"

[[items]]
section = "color"
name = "pagermode"
default-type = "dynamic"

[[items]]
section = "command-templates"
name = "graphnode"
alias = [["ui", "graphnodetemplate"]]

[[items]]
section = "command-templates"
name = "log"
alias = [["ui", "logtemplate"]]

[[items]]
section = "command-templates"
name = "mergemarker"
default = '{node|short} {ifeq(tags, "tip", "", ifeq(tags, "", "", "{tags} "))}{if(bookmarks, "{bookmarks} ")}{ifeq(branch, "default", "", "{branch} ")}- {author|user}: {desc|firstline}'
alias = [["ui", "mergemarkertemplate"]]

[[items]]
section = "command-templates"
name = "oneline-summary"

[[items]]
section = "command-templates"
name = "oneline-summary.*"
default-type = "dynamic"
generic = true

[[items]]
section = "command-templates"
name = "pre-merge-tool-output"
alias = [["ui", "pre-merge-tool-output-template"]]

[[items]]
section = "commands"
name = "commit.post-status"
default = false

[[items]]
section = "commands"
name = "grep.all-files"
default = false
experimental = true

[[items]]
section = "commands"
name = "merge.require-rev"
default = false

[[items]]
section = "commands"
name = "push.require-revs"
default = false

# Rebase related configuration moved to core because other extension are doing
# strange things. For example, shelve import the extensions to reuse some bit
# without formally loading it.
[[items]]
section = "commands"
name = "rebase.requiredest"
default = false

[[items]]
section = "commands"
name = "resolve.confirm"
default = false

[[items]]
section = "commands"
name = "resolve.explicit-re-merge"
default = false

[[items]]
section = "commands"
name = "resolve.mark-check"
default = "none"

[[items]]
section = "commands"
name = "show.aliasprefix"
default-type = "list_type"

[[items]]
section = "commands"
name = "status.relative"
default = false

[[items]]
section = "commands"
name = "status.skipstates"
default = []
experimental = true

[[items]]
section = "commands"
name = "status.terse"
default = ""

[[items]]
section = "commands"
name = "status.verbose"
default = false

[[items]]
section = "commands"
name = "update.check"

[[items]]
section = "commands"
name = "update.requiredest"
default = false

[[items]]
section = "committemplate"
name = ".*"
generic = true

[[items]]
section = "convert"
name = "bzr.saverev"
default = true

[[items]]
section = "convert"
name = "cvsps.cache"
default = true

[[items]]
section = "convert"
name = "cvsps.fuzz"
default = 60

[[items]]
section = "convert"
name = "cvsps.logencoding"

[[items]]
section = "convert"
name = "cvsps.mergefrom"

[[items]]
section = "convert"
name = "cvsps.mergeto"

[[items]]
section = "convert"
name = "git.committeractions"
default-type = "lambda"
default = [ "messagedifferent",]

[[items]]
section = "convert"
name = "git.extrakeys"
default-type = "list_type"

[[items]]
section = "convert"
name = "git.findcopiesharder"
default = false

[[items]]
section = "convert"
name = "git.remoteprefix"
default = "remote"

[[items]]
section = "convert"
name = "git.renamelimit"
default = 400

[[items]]
section = "convert"
name = "git.saverev"
default = true

[[items]]
section = "convert"
name = "git.similarity"
default = 50

[[items]]
section = "convert"
name = "git.skipsubmodules"
default = false

[[items]]
section = "convert"
name = "hg.clonebranches"
default = false

[[items]]
section = "convert"
name = "hg.ignoreerrors"
default = false

[[items]]
section = "convert"
name = "hg.preserve-hash"
default = false

[[items]]
section = "convert"
name = "hg.revs"

[[items]]
section = "convert"
name = "hg.saverev"
default = false

[[items]]
section = "convert"
name = "hg.sourcename"

[[items]]
section = "convert"
name = "hg.startrev"

[[items]]
section = "convert"
name = "hg.tagsbranch"
default = "default"

[[items]]
section = "convert"
name = "hg.usebranchnames"
default = true

[[items]]
section = "convert"
name = "ignoreancestorcheck"
default = false
experimental = true

[[items]]
section = "convert"
name = "localtimezone"
default = false

[[items]]
section = "convert"
name = "p4.encoding"
default-type = "dynamic"

[[items]]
section = "convert"
name = "p4.startrev"
default = 0

[[items]]
section = "convert"
name = "skiptags"
default = false

[[items]]
section = "convert"
name = "svn.branches"

[[items]]
section = "convert"
name = "svn.dangerous-set-commit-dates"
default = false

[[items]]
section = "convert"
name = "svn.debugsvnlog"
default = true

[[items]]
section = "convert"
name = "svn.startrev"
default = 0

[[items]]
section = "convert"
name = "svn.tags"

[[items]]
section = "convert"
name = "svn.trunk"

[[items]]
section = "debug"
name = "bundling-stats"
default = false
documentation = "Display extra information about the bundling process."

[[items]]
section = "debug"
name = "dirstate.delaywrite"
default = 0

[[items]]
section = "debug"
name = "revlog.debug-delta"
default = false

[[items]]
section = "debug"
name = "revlog.verifyposition.changelog"
default = ""

[[items]]
section = "debug"
name = "unbundling-stats"
default = false
documentation = "Display extra information about the unbundling process."

[[items]]
section = "defaults"
name = ".*"
generic = true

[[items]]
section = "devel"
name = "all-warnings"
default = false

[[items]]
section = "devel"
name = "bundle.delta"
default = ""

[[items]]
section = "devel"
name = "bundle2.debug"
default = false

[[items]]
section = "devel"
name = "cache-vfs"

[[items]]
section = "devel"
name = "check-locks"
default = false

[[items]]
section = "devel"
name = "check-relroot"
default = false

[[items]]
section = "devel"
name = "copy-tracing.multi-thread"
default = true

# Track copy information for all files, not just "added" ones (very slow)
[[items]]
section = "devel"
name = "copy-tracing.trace-all-files"
default = false

[[items]]
section = "devel"
name = "debug.abort-update"
default = false
documentation = """If true, then any merge with the working copy, \
e.g. [hg update], will be aborted after figuring out what needs to be done, \
but before spawning the parallel worker."""

[[items]]
section = "devel"
name = "debug.copies"
default = false

[[items]]
section = "devel"
name = "debug.extensions"
default = false

[[items]]
section = "devel"
name = "debug.peer-request"
default = false

[[items]]
section = "devel"
name = "debug.repo-filters"
default = false

[[items]]
section = "devel"
name = "default-date"

[[items]]
section = "devel"
name = "deprec-warn"
default = false

# possible values:
# - auto (the default)
# - force-append
# - force-new
[[items]]
section = "devel"
name = "dirstate.v2.data_update_mode"
default = "auto"

[[items]]
section = "devel"
name = "disableloaddefaultcerts"
default = false

[[items]]
section = "devel"
name = "discovery.exchange-heads"
default = true
documentation = """If false, the discovery will not start with remote \
head fetching and local head querying."""

[[items]]
section = "devel"
name = "discovery.grow-sample"
default = true
documentation = """If false, the sample size used in set discovery \
will not be increased through the process."""

[[items]]
section = "devel"
name = "discovery.grow-sample.dynamic"
default = true
documentation = """If true, the default, the sample size is adapted to the shape \
of the undecided set. It is set to the max of:
`<target-size>, len(roots(undecided)), len(heads(undecided))`"""

[[items]]
section = "devel"
name = "discovery.grow-sample.rate"
default = 1.05
documentation = "Controls the rate at which the sample grows."

[[items]]
section = "devel"
name = "discovery.randomize"
default = true
documentation = """If false, random samplings during discovery are deterministic. \
It is meant for integration tests."""

[[items]]
section = "devel"
name = "discovery.sample-size"
default = 200
documentation = "Controls the initial size of the discovery sample."

[[items]]
section = "devel"
name = "discovery.sample-size.initial"
default = 100
documentation = "Controls the initial size of the discovery for initial change."

[[items]]
section = "devel"
name = "legacy.exchange"
default-type = "list_type"

[[items]]
section = "devel"
name = "persistent-nodemap"
default = false
documentation = """When true, revlogs use a special reference version of the \
nodemap, that is not performant but is "known" to behave properly."""

[[items]]
section = "devel"
name = "server-insecure-exact-protocol"
default = ""

[[items]]
section = "devel"
name = "servercafile"
default = ""

[[items]]
section = "devel"
name = "serverexactprotocol"
default = ""

[[items]]
section = "devel"
name = "serverrequirecert"
default = false

[[items]]
section = "devel"
name = "strip-obsmarkers"
default = true

[[items]]
section = 'devel'
name = 'sync.status.pre-dirstate-write-file'
documentation = """
Makes the status algorithm wait for the existence of this file \
(or until a timeout of `devel.sync.status.pre-dirstate-write-file-timeout` \
seconds) before taking the lock and writing the dirstate. \
Status signals that it's ready to wait by creating a file \
with the same name + `.waiting`. \
Useful when testing race conditions."""

[[items]]
section = 'devel'
name = 'sync.status.pre-dirstate-write-file-timeout'
default=2

[[items]]
section = 'devel'
name = 'sync.dirstate.post-docket-read-file'

[[items]]
section = 'devel'
name = 'sync.dirstate.post-docket-read-file-timeout'
default=2

[[items]]
section = 'devel'
name = 'sync.dirstate.pre-read-file'

[[items]]
section = 'devel'
name = 'sync.dirstate.pre-read-file-timeout'
default=2

[[items]]
section = "devel"
name = "user.obsmarker"

[[items]]
section = "devel"
name = "warn-config"

[[items]]
section = "devel"
name = "warn-config-default"

[[items]]
section = "devel"
name = "warn-config-unknown"

[[items]]
section = "devel"
name = "warn-empty-changegroup"
default = false

[[items]]
section = "diff"
name = "merge"
default = false
experimental = true

[[items]]
section = "email"
name = "bcc"

[[items]]
section = "email"
name = "cc"

[[items]]
section = "email"
name = "charsets"
default-type = "list_type"

[[items]]
section = "email"
name = "from"

[[items]]
section = "email"
name = "method"
default = "smtp"

[[items]]
section = "email"
name = "reply-to"

[[items]]
section = "email"
name = "to"

[[items]]
section = "experimental"
name = "archivemetatemplate"
default-type = "dynamic"

[[items]]
section = "experimental"
name = "auto-publish"
default = "publish"

[[items]]
section = "experimental"
name = "bundle-phases"
default = false

[[items]]
section = "experimental"
name = "bundle2-advertise"
default = true

[[items]]
section = "experimental"
name = "bundle2-output-capture"
default = false

[[items]]
section = "experimental"
name = "bundle2.pushback"
default = false

[[items]]
section = "experimental"
name = "bundle2lazylocking"
default = false

[[items]]
section = "experimental"
name = "bundlecomplevel"

[[items]]
section = "experimental"
name = "bundlecomplevel.bzip2"

[[items]]
section = "experimental"
name = "bundlecomplevel.gzip"

[[items]]
section = "experimental"
name = "bundlecomplevel.none"

[[items]]
section = "experimental"
name = "bundlecomplevel.zstd"

[[items]]
section = "experimental"
name = "bundlecompthreads"

[[items]]
section = "experimental"
name = "bundlecompthreads.bzip2"

[[items]]
section = "experimental"
name = "bundlecompthreads.gzip"

[[items]]
section = "experimental"
name = "bundlecompthreads.none"

[[items]]
section = "experimental"
name = "bundlecompthreads.zstd"

[[items]]
section = "experimental"
name = "changegroup3"
default = true

[[items]]
section = "experimental"
name = "changegroup4"
default = false

# might remove rank configuration once the computation has no impact
[[items]]
section = "experimental"
name = "changelog-v2.compute-rank"
default = true

[[items]]
section = "experimental"
name = "cleanup-as-archived"
default = false

[[items]]
section = "experimental"
name = "clientcompressionengines"
default-type = "list_type"

[[items]]
section = "experimental"
name = "copies.read-from"
default = "filelog-only"

[[items]]
section = "experimental"
name = "copies.write-to"
default = "filelog-only"

[[items]]
section = "experimental"
name = "copytrace"
default = "on"

[[items]]
section = "experimental"
name = "copytrace.movecandidateslimit"
default = 100

[[items]]
section = "experimental"
name = "copytrace.sourcecommitlimit"
default = 100

[[items]]
section = "experimental"
name = "crecordtest"

[[items]]
section = "experimental"
name = "directaccess"
default = false

[[items]]
section = "experimental"
name = "directaccess.revnums"
default = false

[[items]]
section = "experimental"
name = "editortmpinhg"
default = false

[[items]]
section = "experimental"
name = "evolution"
default-type = "list_type"

[[items]]
section = "experimental"
name = "evolution.allowdivergence"
default = false
alias = [["experimental", "allowdivergence"]]

[[items]]
section = "experimental"
name = "evolution.allowunstable"

[[items]]
section = "experimental"
name = "evolution.bundle-obsmarker"
default = false

[[items]]
section = "experimental"
name = "evolution.bundle-obsmarker:mandatory"
default = true

[[items]]
section = "experimental"
name = "evolution.createmarkers"

[[items]]
section = "experimental"
name = "evolution.effect-flags"
default = true
alias = [["experimental", "effect-flags"]]

[[items]]
section = "experimental"
name = "evolution.exchange"

[[items]]
section = "experimental"
name = "evolution.report-instabilities"
default = true

[[items]]
section = "experimental"
name = "evolution.track-operation"
default = true

[[items]]
section = "experimental"
name = "exportableenviron"
default-type = "list_type"

[[items]]
section = "experimental"
name = "extendedheader.index"

[[items]]
section = "experimental"
name = "extendedheader.similarity"
default = false

[[items]]
section = "experimental"
name = "extra-filter-revs"
documentation = """Repo-level config to prevent a revset from being visible.
The target use case is to use `share` to expose different subsets of the same \
repository, especially server side. See also `server.view`."""

[[items]]
section = "experimental"
name = "graphshorten"
default = false

[[items]]
section = "experimental"
name = "graphstyle.grandparent"
default-type = "dynamic"

[[items]]
section = "experimental"
name = "graphstyle.missing"
default-type = "dynamic"

[[items]]
section = "experimental"
name = "graphstyle.parent"
default-type = "dynamic"

[[items]]
section = "experimental"
name = "hook-track-tags"
default = false

[[items]]
section = "experimental"
name = "httppostargs"
default = false

[[items]]
section = "experimental"
name = "log.topo"
default = false

[[items]]
section = "experimental"
name = "maxdeltachainspan"
default = -1

[[items]]
section = "experimental"
name = "merge-track-salvaged"
default = false
documentation = """Tracks files which were undeleted (merge might delete them \
but we explicitly kept/undeleted them) and creates new filenodes for them."""

[[items]]
section = "experimental"
name = "merge.checkpathconflicts"
default = false

[[items]]
section = "experimental"
name = "mmapindexthreshold"

[[items]]
section = "experimental"
name = "narrow"
default = false

[[items]]
section = "experimental"
name = "nointerrupt"
default = false

[[items]]
section = "experimental"
name = "nointerrupt-interactiveonly"
default = true

[[items]]
section = "experimental"
name = "nonnormalparanoidcheck"
default = false

[[items]]
section = "experimental"
name = "obsmarkers-exchange-debug"
default = false

[[items]]
section = "experimental"
name = "rebaseskipobsolete"
default = true

[[items]]
section = "experimental"
name = "remotenames"
default = false

[[items]]
section = "experimental"
name = "removeemptydirs"
default = true

[[items]]
section = "experimental"
name = "revert.interactive.select-to-keep"
default = false

[[items]]
section = "experimental"
name = "revisions.disambiguatewithin"

[[items]]
section = "experimental"
name = "revisions.prefixhexnode"
default = false

# "out of experimental" todo list.
#
# * include management of a persistent nodemap in the main docket
# * enforce a "no-truncate" policy for mmap safety
#      - for censoring operation
#      - for stripping operation
#      - for rollback operation
# * proper streaming (race free) of the docket file
# * track garbage data to evemtually allow rewriting -existing- sidedata.
# * Exchange-wise, we will also need to do something more efficient than
#   keeping references to the affected revlogs, especially memory-wise when
#   rewriting sidedata.
# * introduce a proper solution to reduce the number of filelog related files.
# * use caching for reading sidedata (similar to what we do for data).
# * no longer set offset=0 if sidedata_size=0 (simplify cutoff computation).
# * Improvement to consider
#   - avoid compression header in chunk using the default compression?
#   - forbid "inline" compression mode entirely?
#   - split the data offset and flag field (the 2 bytes save are mostly trouble)
#   - keep track of uncompressed -chunk- size (to preallocate memory better)
#   - keep track of chain base or size (probably not that useful anymore)
[[items]]
section = "experimental"
name = "revlogv2"

[[items]]
section = "experimental"
name = "rust.index"
default = false

[[items]]
section = "experimental"
name = "server.allow-hidden-access"
default-type = "list_type"

[[items]]
section = "experimental"
name = "server.filesdata.recommended-batch-size"
default = 50000

[[items]]
section = "experimental"
name = "server.manifestdata.recommended-batch-size"
default = 100000

[[items]]
section = "experimental"
name = "server.stream-narrow-clones"
default = false

[[items]]
section = "experimental"
name = "single-head-per-branch"
default = false

[[items]]
section = "experimental"
name = "single-head-per-branch:account-closed-heads"
default = false

[[items]]
section = "experimental"
name = "single-head-per-branch:public-changes-only"
default = false

[[items]]
section = "experimental"
name = "sparse-read"
default = false

[[items]]
section = "experimental"
name = "sparse-read.density-threshold"
default = 0.5

[[items]]
section = "experimental"
name = "sparse-read.min-gap-size"
default = "65K"

[[items]]
section = "experimental"
name = "revlog.uncompressed-cache.enabled"
default = true
experimental = true
documentation = """Enable some caching of uncompressed chunk, greatly boosting
performance at the cost of memory usage."""

[[items]]
section = "experimental"
name = "revlog.uncompressed-cache.factor"
default = 4
experimental = true
documentation = """The size of the cache compared to the largest revision seen."""

[[items]]
section = "experimental"
name = "revlog.uncompressed-cache.count"
default = 10000
experimental = true
documentation = """The number of chunk cached."""

[[items]]
section = "experimental"
name = "stream-v3"
default = false

[[items]]
section = "experimental"
name = "treemanifest"
default = false

[[items]]
section = "experimental"
name = "update.atomic-file"
default = false

[[items]]
section = "experimental"
name = "web.full-garbage-collection-rate"
default = 1  # still forcing a full collection on each request

[[items]]
section = "experimental"
name = "worker.repository-upgrade"
default = false

[[items]]
section = "experimental"
name = "worker.wdir-get-thread-safe"
default = false

[[items]]
section = "experimental"
name = "xdiff"
default = false

[[items]]
section = "extdata"
name = ".*"
generic = true

[[items]]
section = "extensions"
name = "[^:]*"
generic = true

[[items]]
section = "extensions"
name = "[^:]*:required"
default = false
generic = true

[[items]]
section = "format"
name = "bookmarks-in-store"
default = false

[[items]]
section = "format"
name = "chunkcachesize"
experimental = true

[[items]]
section = "format"
name = "dotencode"
default = true

# The interaction between the archived phase and obsolescence markers needs to
# be sorted out before wider usage of this are to be considered.
#
# At the time this message is written, behavior when archiving obsolete
# changeset differ significantly from stripping. As part of stripping, we also
# remove the obsolescence marker associated to the stripped changesets,
# revealing the precedecessors changesets when applicable. When archiving, we
# don't touch the obsolescence markers, keeping everything hidden. This can
# result in quite confusing situation for people combining exchanging draft
# with the archived phases. As some markers needed by others may be skipped
# during exchange.
[[items]]
section = "format"
name = "exp-archived-phase"
default = false
experimental = true

# Experimental TODOs:
#
# * Same as for revlogv2 (but for the reduction of the number of files)
# * Actually computing the rank of changesets
# * Improvement to investigate
#   - storing .hgtags fnode
#   - storing branch related identifier
[[items]]
section = "format"
name = "exp-use-changelog-v2"
experimental = true

[[items]]
section = "format"
name = "exp-use-copies-side-data-changeset"
default = false
experimental = true

[[items]]
section = "format"
name = "generaldelta"
default = false
experimental = true

[[items]]
section = "format"
name = "manifestcachesize"
experimental = true

[[items]]
section = "format"
name = "maxchainlen"
default-type = "dynamic"
experimental = true

[[items]]
section = "format"
name = "obsstore-version"

[[items]]
section = "format"
name = "revlog-compression"
default-type = "lambda"
alias = [["experimental", "format.compression"]]
default = [ "zstd", "zlib",]

[[items]]
section = "format"
name = "sparse-revlog"
default = true

[[items]]
section = "format"
name = "use-dirstate-tracked-hint"
default = false
experimental = true

[[items]]
section = "format"
name = "use-dirstate-tracked-hint.automatic-upgrade-of-mismatching-repositories"
default = false
experimental = true

[[items]]
section = "format"
name = "use-dirstate-tracked-hint.automatic-upgrade-of-mismatching-repositories:quiet"
default = false
experimental = true

[[items]]
section = "format"
name = "use-dirstate-tracked-hint.version"
default = 1
experimental = true

[[items]]
section = "format"
name = "use-dirstate-v2"
default = false
alias = [["format", "exp-rc-dirstate-v2"]]
experimental = true
documentation = """Enables dirstate-v2 format *when creating a new repository*.
Which format to use for existing repos is controlled by `.hg/requires`."""

[[items]]
section = "format"
name = "use-dirstate-v2.automatic-upgrade-of-mismatching-repositories"
default = false
experimental = true

[[items]]
section = "format"
name = "use-dirstate-v2.automatic-upgrade-of-mismatching-repositories:quiet"
default = false
experimental = true

# Having this on by default means we are confident about the scaling of phases.
# This is not garanteed to be the case at the time this message is written.
[[items]]
section = "format"
name = "use-internal-phase"
default = false
experimental = true

[[items]]
section = "format"
name = "use-persistent-nodemap"
default-type = "dynamic"

[[items]]
section = "format"
name = "use-share-safe"
default = true

[[items]]
section = "format"
name = "use-share-safe.automatic-upgrade-of-mismatching-repositories"
default = false
experimental = true

[[items]]
section = "format"
name = "use-share-safe.automatic-upgrade-of-mismatching-repositories:quiet"
default = false
experimental = true

[[items]]
section = "format"
name = "usefncache"
default = true

[[items]]
section = "format"
name = "usegeneraldelta"
default = true

[[items]]
section = "format"
name = "usestore"
default = true

[[items]]
section = "fsmonitor"
name = "warn_update_file_count"
default = 50000

[[items]]
section = "fsmonitor"
name = "warn_update_file_count_rust"
default = 400000

[[items]]
section = "fsmonitor"
name = "warn_when_unused"
default = true

[[items]]
section = "help"
name = 'hidden-command\..*'
default = false
generic = true

[[items]]
section = "help"
name = 'hidden-topic\..*'
default = false
generic = true

[[items]]
section = "hgweb-paths"
name = ".*"
default-type = "list_type"
generic = true

[[items]]
section = "hooks"
name = ".*:run-with-plain"
default = true
generic = true

[[items]]
section = "hooks"
name = "[^:]*"
default-type = "dynamic"
generic = true

[[items]]
section = "hostfingerprints"
name = ".*"
default-type = "list_type"
generic = true

[[items]]
section = "hostsecurity"
name = ".*:ciphers$"
default-type = "dynamic"
generic = true

[[items]]
section = "hostsecurity"
name = ".*:fingerprints$"
default-type = "list_type"
generic = true

[[items]]
section = "hostsecurity"
name = ".*:minimumprotocol$"
default-type = "dynamic"
generic = true

[[items]]
section = "hostsecurity"
name = ".*:verifycertsfile$"
generic = true

[[items]]
section = "hostsecurity"
name = "ciphers"

[[items]]
section = "hostsecurity"
name = "minimumprotocol"
default-type = "dynamic"

[[items]]
section = "http"
name = "timeout"

[[items]]
section = "http_proxy"
name = "always"
default = false

[[items]]
section = "http_proxy"
name = "host"

[[items]]
section = "http_proxy"
name = "no"
default-type = "list_type"

[[items]]
section = "http_proxy"
name = "passwd"

[[items]]
section = "http_proxy"
name = "user"

[[items]]
section = "logtoprocess"
name = "command"

[[items]]
section = "logtoprocess"
name = "commandexception"

[[items]]
section = "logtoprocess"
name = "commandfinish"

[[items]]
section = "logtoprocess"
name = "develwarn"

[[items]]
section = "logtoprocess"
name = "uiblocked"

[[items]]
section = "merge"
name = "checkignored"
default = "abort"

[[items]]
section = "merge"
name = "checkunknown"
default = "abort"

[[items]]
section = "merge"
name = "disable-partial-tools"
default = false
experimental = true

[[items]]
section = "merge"
name = "followcopies"
default = true

[[items]]
section = "merge"
name = "on-failure"
default = "continue"

[[items]]
section = "merge"
name = "preferancestor"
default-type = "lambda"
default = ["*"]
experimental = true

[[items]]
section = "merge"
name = "strict-capability-check"
default = false

[[items]]
section = "merge-tools"
name = ".*"
generic = true

[[items]]
section = "merge-tools"
name = '.*\.args$'
default = "$local $base $other"
generic = true
priority = -1

[[items]]
section = "merge-tools"
name = '.*\.binary$'
default = false
generic = true
priority = -1

[[items]]
section = "merge-tools"
name = '.*\.check$'
default-type = "list_type"
generic = true
priority = -1

[[items]]
section = "merge-tools"
name = '.*\.checkchanged$'
default = false
generic = true
priority = -1

[[items]]
section = "merge-tools"
name = '.*\.executable$'
default-type = "dynamic"
generic = true
priority = -1

[[items]]
section = "merge-tools"
name = '.*\.fixeol$'
default = false
generic = true
priority = -1

[[items]]
section = "merge-tools"
name = '.*\.gui$'
default = false
generic = true
priority = -1

[[items]]
section = "merge-tools"
name = '.*\.mergemarkers$'
default = "basic"
generic = true
priority = -1

[[items]]
section = "merge-tools"
name = '.*\.mergemarkertemplate$'  # take from command-templates.mergemarker
default-type = "dynamic"
generic = true
priority = -1

[[items]]
section = "merge-tools"
name = '.*\.premerge$'
default-type = "dynamic"
generic = true
priority = -1

[[items]]
section = "merge-tools"
name = '.*\.priority$'
default = 0
generic = true
priority = -1

[[items]]
section = "merge-tools"
name = '.*\.regappend$'
default = ""
generic = true
priority = -1

[[items]]
section = "merge-tools"
name = '.*\.symlink$'
default = false
generic = true
priority = -1

[[items]]
section = "pager"
name = "attend-.*"
default-type = "dynamic"
generic = true

[[items]]
section = "pager"
name = "ignore"
default-type = "list_type"

[[items]]
section = "pager"
name = "pager"
default-type = "dynamic"

[[items]]
section = "partial-merge-tools"
name = ".*"
generic = true
experimental = true

[[items]]
section = "partial-merge-tools"
name = '.*\.args'
default = "$local $base $other"
generic = true
priority = -1
experimental = true

[[items]]
section = "partial-merge-tools"
name = '.*\.disable'
default = false
generic = true
priority = -1
experimental = true

[[items]]
section = "partial-merge-tools"
name = '.*\.executable$'
default-type = "dynamic"
generic = true
priority = -1
experimental = true

[[items]]
section = "partial-merge-tools"
name = '.*\.order'
default = 0
generic = true
priority = -1
experimental = true

[[items]]
section = "partial-merge-tools"
name = '.*\.patterns'
default-type = "dynamic"
generic = true
priority = -1
experimental = true

[[items]]
section = "patch"
name = "eol"
default = "strict"

[[items]]
section = "patch"
name = "fuzz"
default = 2

[[items]]
section = "paths"
name = "[^:]*"
generic = true

[[items]]
section = "paths"
name = ".*:bookmarks.mode"
default = "default"
generic = true

[[items]]
section = "paths"
name = ".*:multi-urls"
default = false
generic = true

[[items]]
section = "paths"
name = ".*:pulled-delta-reuse-policy"
generic = true

[[items]]
section = "paths"
name = ".*:pushrev"
generic = true

[[items]]
section = "paths"
name = ".*:pushurl"
generic = true

[[items]]
section = "paths"
name = "default"

[[items]]
section = "paths"
name = "default-push"

[[items]]
section = "phases"
name = "checksubrepos"
default = "follow"

[[items]]
section = "phases"
name = "new-commit"
default = "draft"

[[items]]
section = "phases"
name = "publish"
default = true

[[items]]
section = "profiling"
name = "enabled"
default = false

[[items]]
section = "profiling"
name = "format"
default = "text"

[[items]]
section = "profiling"
name = "freq"
default = 1000

[[items]]
section = "profiling"
name = "limit"
default = 30

[[items]]
section = "profiling"
name = "nested"
default = 0

[[items]]
section = "profiling"
name = "output"

[[items]]
section = "profiling"
name = "showmax"
default = 0.999

[[items]]
section = "profiling"
name = "showmin"
default-type = "dynamic"

[[items]]
section = "profiling"
name = "showtime"
default = true

[[items]]
section = "profiling"
name = "sort"
default = "inlinetime"

[[items]]
section = "profiling"
name = "statformat"
default = "hotpath"

[[items]]
section = "profiling"
name = "time-track"
default-type = "dynamic"

[[items]]
section = "profiling"
name = "type"
default = "stat"

[[items]]
section = "progress"
name = "assume-tty"
default = false

[[items]]
section = "progress"
name = "changedelay"
default = 1

[[items]]
section = "progress"
name = "clear-complete"
default = true

[[items]]
section = "progress"
name = "debug"
default = false

[[items]]
section = "progress"
name = "delay"
default = 3

[[items]]
section = "progress"
name = "disable"
default = false

[[items]]
section = "progress"
name = "estimateinterval"
default = 60.0

[[items]]
section = "progress"
name = "format"
default-type = "lambda"
default = [ "topic", "bar", "number", "estimate",]

[[items]]
section = "progress"
name = "refresh"
default = 0.1

[[items]]
section = "progress"
name = "width"
default-type = "dynamic"

[[items]]
section = "pull"
name = "confirm"
default = false

[[items]]
section = "push"
name = "pushvars.server"
default = false

[[items]]
section = "rebase"
name = "experimental.inmemory"
default = false

[[items]]
section = "rebase"
name = "singletransaction"
default = false

[[items]]
section = "rebase"
name = "store-source"
default = true
experimental = true
documentation = """Controls creation of a `rebase_source` extra field during rebase.
When false, no such field is created. This is useful e.g. for incrementally \
converting changesets and then rebasing them onto an existing repo.
WARNING: this is an advanced setting reserved for people who know \
exactly what they are doing. Misuse of this setting can easily \
result in obsmarker cycles and a vivid headache."""

[[items]]
section = "rewrite"
name = "backup-bundle"
default = true
alias = [["ui", "history-editing-backup"]]

[[items]]
section = "rewrite"
name = "empty-successor"
default = "skip"
experimental = true

[[items]]
section = "rewrite"
name = "update-timestamp"
default = false

[[items]]
section = "rhg"
name = "cat"
default = true
experimental = true
documentation = """rhg cat has some quirks that need to be ironed out. \
In particular, the `-r` argument accepts a partial hash, but does not \
correctly resolve `abcdef` as a potential bookmark, tag or branch name."""

[[items]]
section = "rhg"
name = "fallback-exectutable"
experimental = true

[[items]]
section = "rhg"
name = "fallback-immediately"
default = false
experimental = true

[[items]]
section = "rhg"
name = "ignored-extensions"
default-type = "list_type"
experimental = true

[[items]]
section = "rhg"
name = "on-unsupported"
default = "abort"
experimental = true

[[items]]
section = "server"
name = "bookmarks-pushkey-compat"
default = true

[[items]]
section = "server"
name = "bundle1"
default = true

[[items]]
section = "server"
name = "bundle1.pull"

[[items]]
section = "server"
name = "bundle1.push"

[[items]]
section = "server"
name = "bundle1gd"

[[items]]
section = "server"
name = "bundle1gd.pull"

[[items]]
section = "server"
name = "bundle1gd.push"

[[items]]
section = "server"
name = "bundle2.stream"
default = true
alias = [["experimental", "bundle2.stream"]]

[[items]]
section = "server"
name = "compressionengines"
default-type = "list_type"

[[items]]
section = "server"
name = "concurrent-push-mode"
default = "check-related"

[[items]]
section = "server"
name = "disablefullbundle"
default = false

[[items]]
section = "server"
name = "maxhttpheaderlen"
default = 1024

[[items]]
section = "server"
name = "preferuncompressed"
default = false

[[items]]
section = "server"
name = "pullbundle"
default = true

[[items]]
section = "server"
name = "streamunbundle"
default = false

[[items]]
section = "server"
name = "uncompressed"
default = true

[[items]]
section = "server"
name = "uncompressedallowsecret"
default = false

[[items]]
section = "server"
name = "validate"
default = false

[[items]]
section = "server"
name = "view"
default = "served"

[[items]]
section = "server"
name = "zliblevel"
default = -1

[[items]]
section = "server"
name = "zstdlevel"
default = 3

[[items]]
section = "share"
name = "pool"

[[items]]
section = "share"
name = "poolnaming"
default = "identity"

[[items]]
section = "share"
name = "safe-mismatch.source-not-safe"
default = "abort"

[[items]]
section = "share"
name = "safe-mismatch.source-not-safe.warn"
default = true

[[items]]
section = "share"
name = "safe-mismatch.source-not-safe:verbose-upgrade"
default = true

[[items]]
section = "share"
name = "safe-mismatch.source-safe"
default = "abort"

[[items]]
section = "share"
name = "safe-mismatch.source-safe.warn"
default = true

[[items]]
section = "share"
name = "safe-mismatch.source-safe:verbose-upgrade"
default = true

[[items]]
section = "shelve"
name = "maxbackups"
default = 10

[[items]]
section = "shelve"
name = "store"
default = "internal"
experimental = true

[[items]]
section = "smtp"
name = "host"

[[items]]
section = "smtp"
name = "local_hostname"

[[items]]
section = "smtp"
name = "password"

[[items]]
section = "smtp"
name = "port"
default-type = "dynamic"

[[items]]
section = "smtp"
name = "tls"
default = "none"

[[items]]
section = "smtp"
name = "username"

[[items]]
section = "sparse"
name = "missingwarning"
default = true
experimental = true

[[items]]
section = "storage"
name = "dirstate-v2.slow-path"
default = "abort"
experimental = true  # experimental as long as format.use-dirstate-v2 is.

[[items]]
section = "storage"
name = "new-repo-backend"
default = "revlogv1"
experimental = true

[[items]]
section = "storage"
name = "revlog.delta-parent-search.candidate-group-chunk-size"
default = 20

[[items]]
section = "storage"
name = "revlog.issue6528.fix-incoming"
default = true

[[items]]
section = "storage"
name = "revlog.optimize-delta-parent-choice"
default = true
alias = [["format", "aggressivemergedeltas"]]

[[items]]
section = "storage"
name = "revlog.persistent-nodemap.mmap"
default = true

[[items]]
section = "storage"
name = "revlog.persistent-nodemap.slow-path"
default = "abort"

[[items]]
section = "storage"
name = "revlog.reuse-external-delta"
default = true

[[items]]
section = "storage"
name = "revlog.reuse-external-delta-parent"
documentation = """This option is true unless `format.generaldelta` is set."""

[[items]]
section = "storage"
name = "revlog.zlib.level"

[[items]]
section = "storage"
name = "revlog.zstd.level"

[[items]]
section = "subrepos"
name = "allowed"
default-type = "dynamic"  # to make backporting simpler

[[items]]
section = "subrepos"
name = "git:allowed"
default-type = "dynamic"

[[items]]
section = "subrepos"
name = "hg:allowed"
default-type = "dynamic"

[[items]]
section = "subrepos"
name = "svn:allowed"
default-type = "dynamic"

[[items]]
section = "templateconfig"
name = ".*"
default-type = "dynamic"
generic = true

[[items]]
section = "templates"
name = ".*"
generic = true

[[items]]
section = "trusted"
name = "groups"
default-type = "list_type"

[[items]]
section = "trusted"
name = "users"
default-type = "list_type"

[[items]]
section = "ui"
name = "_usedassubrepo"
default = false

[[items]]
section = "ui"
name = "allowemptycommit"
default = false

[[items]]
section = "ui"
name = "archivemeta"
default = true

[[items]]
section = "ui"
name = "askusername"
default = false

[[items]]
section = "ui"
name = "available-memory"

[[items]]
section = "ui"
name = "clonebundlefallback"
default = false

[[items]]
section = "ui"
name = "clonebundleprefers"
default-type = "list_type"

[[items]]
section = "ui"
name = "clonebundles"
default = true

[[items]]
section = "ui"
name = "color"
default = "auto"

[[items]]
section = "ui"
name = "commitsubrepos"
default = false

[[items]]
section = "ui"
name = "debug"
default = false

[[items]]
section = "ui"
name = "debugger"

[[items]]
section = "ui"
name = "detailed-exit-code"
default = false
experimental = true

[[items]]
section = "ui"
name = "editor"
default-type = "dynamic"

[[items]]
section = "ui"
name = "fallbackencoding"

[[items]]
section = "ui"
name = "forcecwd"

[[items]]
section = "ui"
name = "forcemerge"

[[items]]
section = "ui"
name = "formatdebug"
default = false

[[items]]
section = "ui"
name = "formatjson"
default = false

[[items]]
section = "ui"
name = "formatted"

[[items]]
section = "ui"
name = "interactive"

[[items]]
section = "ui"
name = "interface"

[[items]]
section = "ui"
name = "interface.chunkselector"

[[items]]
section = "ui"
name = "large-file-limit"
default = 10485760

[[items]]
section = "ui"
name = "logblockedtimes"
default = false

[[items]]
section = "ui"
name = "merge"

[[items]]
section = "ui"
name = "mergemarkers"
default = "basic"

[[items]]
section = "ui"
name = "message-output"
default = "stdio"

[[items]]
section = "ui"
name = "nontty"
default = false

[[items]]
section = "ui"
name = "origbackuppath"

[[items]]
section = "ui"
name = "paginate"
default = true

[[items]]
section = "ui"
name = "patch"

[[items]]
section = "ui"
name = "portablefilenames"
default = "warn"

[[items]]
section = "ui"
name = "promptecho"
default = false

[[items]]
section = "ui"
name = "quiet"
default = false

[[items]]
section = "ui"
name = "quietbookmarkmove"
default = false

[[items]]
section = "ui"
name = "relative-paths"
default = "legacy"

[[items]]
section = "ui"
name = "remotecmd"
default = "hg"

[[items]]
section = "ui"
name = "report_untrusted"
default = true

[[items]]
section = "ui"
name = "rollback"
default = true

[[items]]
section = "ui"
name = "signal-safe-lock"
default = true

[[items]]
section = "ui"
name = "slash"
default = false

[[items]]
section = "ui"
name = "ssh"
default = "ssh"

[[items]]
section = "ui"
name = "ssherrorhint"

[[items]]
section = "ui"
name = "statuscopies"
default = false

[[items]]
section = "ui"
name = "strict"
default = false

[[items]]
section = "ui"
name = "style"
default = ""

[[items]]
section = "ui"
name = "supportcontact"

[[items]]
section = "ui"
name = "textwidth"
default = 78

[[items]]
section = "ui"
name = "timeout"
default = "600"

[[items]]
section = "ui"
name = "timeout.warn"
default = 0

[[items]]
section = "ui"
name = "timestamp-output"
default = false

[[items]]
section = "ui"
name = "traceback"
default = false

[[items]]
section = "ui"
name = "tweakdefaults"
default = false

[[items]]
section = "ui"
name = "username"
alias = [["ui", "user"]]

[[items]]
section = "ui"
name = "verbose"
default = false

[[items]]
section = "verify"
name = "skipflags"
default = 0

[[items]]
section = "web"
name = "accesslog"
default = "-"

[[items]]
section = "web"
name = "address"
default = ""

[[items]]
section = "web"
name = "allow-archive"
default-type = "list_type"
alias = [["web", "allow_archive"]]

[[items]]
section = "web"
name = "allow-pull"
default = true
alias = [["web", "allowpull"]]

[[items]]
section = "web"
name = "allow-push"
default-type = "list_type"
alias = [["web", "allow_push"]]

[[items]]
section = "web"
name = "allow_read"
default-type = "list_type"

[[items]]
section = "web"
name = "allowbz2"
default = false

[[items]]
section = "web"
name = "allowgz"
default = false

[[items]]
section = "web"
name = "allowzip"
default = false

[[items]]
section = "web"
name = "archivesubrepos"
default = false

[[items]]
section = "web"
name = "baseurl"

[[items]]
section = "web"
name = "cacerts"

[[items]]
section = "web"
name = "cache"
default = true

[[items]]
section = "web"
name = "certificate"

[[items]]
section = "web"
name = "collapse"
default = false

[[items]]
section = "web"
name = "comparisoncontext"
default = 5

[[items]]
section = "web"
name = "contact"

[[items]]
section = "web"
name = "csp"

[[items]]
section = "web"
name = "deny_push"
default-type = "list_type"

[[items]]
section = "web"
name = "deny_read"
default-type = "list_type"

[[items]]
section = "web"
name = "descend"
default = true

[[items]]
section = "web"
name = "description"
default = ""

[[items]]
section = "web"
name = "encoding"
default-type = "lazy_module"
default = "encoding.encoding"

[[items]]
section = "web"
name = "errorlog"
default = "-"

[[items]]
section = "web"
name = "guessmime"
default = false

[[items]]
section = "web"
name = "hidden"
default = false

[[items]]
section = "web"
name = "ipv6"
default = false

[[items]]
section = "web"
name = "labels"
default-type = "list_type"

[[items]]
section = "web"
name = "logoimg"
default = "hglogo.png"

[[items]]
section = "web"
name = "logourl"
default = "https://mercurial-scm.org/"

[[items]]
section = "web"
name = "maxchanges"
default = 10

[[items]]
section = "web"
name = "maxfiles"
default = 10

[[items]]
section = "web"
name = "maxshortchanges"
default = 60

[[items]]
section = "web"
name = "motd"
default = ""

[[items]]
section = "web"
name = "name"
default-type = "dynamic"

[[items]]
section = "web"
name = "port"
default = 8000

[[items]]
section = "web"
name = "prefix"
default = ""

[[items]]
section = "web"
name = "push_ssl"
default = true

[[items]]
section = "web"
name = "refreshinterval"
default = 20

[[items]]
section = "web"
name = "server-header"

[[items]]
section = "web"
name = "static"

[[items]]
section = "web"
name = "staticurl"

[[items]]
section = "web"
name = "stripes"
default = 1

[[items]]
section = "web"
name = "style"
default = "paper"

[[items]]
section = "web"
name = "templates"

[[items]]
section = "web"
name = "view"
default = "served"
experimental = true

[[items]]
section = "worker"
name = "backgroundclose"
default-type = "dynamic"

[[items]]
section = "worker"
name = "backgroundclosemaxqueue"
# Windows defaults to a limit of 512 open files. A buffer of 128
# should give us enough headway.
default = 384

[[items]]
section = "worker"
name = "backgroundcloseminfilecount"
default = 2048

[[items]]
section = "worker"
name = "backgroundclosethreadcount"
default = 4

[[items]]
section = "worker"
name = "enabled"
default = true

[[items]]
section = "worker"
name = "numcpus"

# Templates and template applications

[[template-applications]]
template = "diff-options"
section = "annotate"

[[template-applications]]
template = "diff-options"
section = "commands"
prefix = "commit.interactive"

[[template-applications]]
template = "diff-options"
section = "commands"
prefix = "revert.interactive"

[[template-applications]]
template = "diff-options"
section = "diff"

[templates]
[[templates.diff-options]]
suffix = "nodates"
default = false

[[templates.diff-options]]
suffix = "showfunc"
default = false

[[templates.diff-options]]
suffix = "unified"

[[templates.diff-options]]
suffix = "git"
default = false

[[templates.diff-options]]
suffix = "ignorews"
default = false

[[templates.diff-options]]
suffix = "ignorewsamount"
default = false

[[templates.diff-options]]
suffix = "ignoreblanklines"
default = false

[[templates.diff-options]]
suffix = "ignorewseol"
default = false

[[templates.diff-options]]
suffix = "nobinary"
default = false

[[templates.diff-options]]
suffix = "noprefix"
default = false

[[templates.diff-options]]
suffix = "word-diff"
default = false

# In-core extensions

[[items]]
section = "blackbox"
name = "debug.to-stderr"
default = false
in_core_extension = "blackbox"

[[items]]
section = "blackbox"
name = "dirty"
default = false
in_core_extension = "blackbox"

[[items]]
section = "blackbox"
name = "maxsize"
default = "1 MB"
in_core_extension = "blackbox"

[[items]]
section = "blackbox"
name = "logsource"
default = false
in_core_extension = "blackbox"

[[items]]
section = "blackbox"
name = "maxfiles"
default = 7
in_core_extension = "blackbox"

[[items]]
section = "blackbox"
name = "track"
default-type = "lambda"
default = ["*"]
in_core_extension = "blackbox"

[[items]]
section = "blackbox"
name = "ignore"
default-type = "lambda"
default = ["chgserver", "cmdserver", "extension"]
in_core_extension = "blackbox"

[[items]]
section = "blackbox"
name = "date-format"
default = ""
in_core_extension = "blackbox"
