| Author: | Bryan O'Sullivan <bos@serpentine.com> |
|---|---|
| Organization: | Mercurial |
| Manual section: | 5 |
| Manual group: | Mercurial Manual |
The Mercurial system uses a set of configuration files to controlaspects of its behavior.
If you're having problems with your configuration,hg config--debug can help you understand what is introducinga setting into your environment.
Seehg help config.syntax andhg help config.filesfor information about how and where to override things.
The configuration files use a simple ini-file format. A configurationfile consists of sections, led by a[section] header and followedbyname = value entries:
[ui]username = Firstname Lastname <firstname.lastname@example.net>verbose = True
The above entries will be referred to asui.username andui.verbose, respectively. Seehg help config.syntax.
Mercurial reads configuration data from several files, if they exist.These files do not exist by default and you will have to create theappropriate configuration files yourself:
Local configuration is put into the per-repository<repo>/.hg/hgrc file.
Global configuration like the username setting is typically put into:
The names of these files depend on the system on which Mercurial isinstalled.*.rc files from a single directory are read inalphabetical order, later ones overriding earlier ones. Where multiplepaths are given below, settings from earlier paths override laterones.
On Unix, the following files are consulted:
On Windows, the following files are consulted:
Note
The registry keyHKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Mercurialis used when running 32-bit Python on 64-bit Windows.
On Plan9, the following files are consulted:
Per-repository configuration options only apply in aparticular repository. This file is not version-controlled, andwill not get transferred during a "clone" operation. Options inthis file override options in all other configuration files.
Per-user configuration file(s) are for the user running Mercurial. Optionsin these files apply to all Mercurial commands executed by this user in anydirectory. Options in these files override per-system and per-installationoptions.
Per-installation configuration files are searched for in thedirectory where Mercurial is installed.<install-root> is theparent directory of thehg executable (or symlink) being run.
Per-installation configuration files are for the system onwhich Mercurial is running. Options in these files apply to allMercurial commands executed by any user in any directory. Registrykeys contain PATH-like strings, every part of which must referenceaMercurial.ini file or be a directory where*.rc files willbe read. Mercurial checks each of these locations in the specifiedorder until one or more configuration files are detected.
Per-system configuration files are for the system on which Mercurialis running. Options in these files apply to all Mercurial commandsexecuted by any user in any directory. Options in these filesoverride per-installation options.
Mercurial comes with some default configuration. The default configurationfiles are installed with Mercurial and will be overwritten on upgrades. Defaultconfiguration files should never be edited by users or administrators but canbe overridden in other configuration files. So far the directory only containsmerge tool configuration but packagers can also put other default configurationthere.
A configuration file consists of sections, led by a[section] headerand followed byname = value entries (sometimes calledconfiguration keys):
[spam]eggs=hamgreen= eggs
Each line contains one entry. If the lines that follow are indented,they are treated as continuations of that entry. Leading whitespace isremoved from values. Empty lines are skipped. Lines beginning with# or; are ignored and may be used to provide comments.
Configuration keys can be set multiple times, in which case Mercurialwill use the value that was configured last. As an example:
[spam]eggs=largeham=serranoeggs=small
This would set the configuration key namedeggs tosmall.
It is also possible to define a section multiple times. A section canbe redefined on the same and/or on different configuration files. Forexample:
[foo]eggs=largeham=serranoeggs=small[bar]eggs=hamgreen= eggs[foo]ham=prosciuttoeggs=mediumbread=toasted
This would set theeggs,ham, andbread configuration keysof thefoo section tomedium,prosciutto, andtoasted,respectively. As you can see there only thing that matters is the lastvalue that was set for each of the configuration keys.
If a configuration key is set multiple times in differentconfiguration files the final value will depend on the order in whichthe different configuration files are read, with settings from earlierpaths overriding later ones as described on theFiles sectionabove.
A line of the form%include file will includefile into thecurrent configuration file. The inclusion is recursive, which meansthat included files can include other files. Filenames are relative tothe configuration file in which the%include directive is found.Environment variables and~user constructs are expanded infile. This lets you do something like:
%include ~/.hgrc.d/$HOST.rc
to include a different configuration file on each computer you use.
A line with%unset name will removename from the currentsection, if it has been set previously.
The values are either free-form text strings, lists of text strings,or Boolean values. Boolean values can be set to true using any of "1","yes", "true", or "on" and to false using "0", "no", "false", or "off"(all case insensitive).
List values are separated by whitespace or comma, except when values areplaced in double quotation marks:
allow_read = "John Doe, PhD", brian, betty
Quotation marks can be escaped by prefixing them with a backslash. Onlyquotation marks at the beginning of a word is counted as a quotation(e.g.,foo"bar baz is the list offoo"bar andbaz).
This section describes the different sections that may appear in aMercurial configuration file, the purpose of each section, its possiblekeys, and their possible values.
Defines command aliases.
Aliases allow you to define your own commands in terms of othercommands (or aliases), optionally including arguments. Positionalarguments in the form of$1,$2, etc. in the alias definitionare expanded by Mercurial before execution. Positional arguments notalready used by$N in the definition are put at the end of thecommand to be executed.
Alias definitions consist of lines of the form:
<alias> = <command> [<argument>]...
For example, this definition:
latest = log --limit 5
creates a new commandlatest that shows only the five most recentchangesets. You can define subsequent aliases using earlier ones:
stable5 = latest -b stable
Note
It is possible to create aliases with the same names asexisting commands, which will then override the originaldefinitions. This is almost always a bad idea!
An alias can start with an exclamation point (!) to make it ashell alias. A shell alias is executed with the shell and will let yourun arbitrary commands. As an example,
echo = !echo $@
will let you dohg echo foo to havefoo printed in yourterminal. A better example might be:
purge = !$HG status --no-status --unknown -0 re: | xargs -0 rm
which will makehg purge delete all unknown files in therepository in the same manner as the purge extension.
Positional arguments like$1,$2, etc. in the alias definitionexpand to the command arguments. Unmatched arguments areremoved.$0 expands to the alias name and$@ expands to allarguments separated by a space."$@" (with quotes) expands to allarguments quoted individually and separated by a space. These expansionshappen before the command is passed to the shell.
Shell aliases are executed in an environment where$HG expands tothe path of the Mercurial that was used to execute the alias. This isuseful when you want to call further Mercurial commands in a shellalias, as was done above for the purge alias. In addition,$HG_ARGS expands to the arguments given to Mercurial. In thehgecho foo call above,$HG_ARGS would expand toecho foo.
Note
Some global configuration options such as-R areprocessed before shell aliases and will thus not be passed toaliases.
Settings used when displaying file annotations. All values areBooleans and default to False. Seehg help config.diff forrelated options for the diff command.
Authentication credentials for HTTP authentication. This sectionallows you to store usernames and passwords for use when logginginto HTTP servers. Seehg help config.web ifyou want to configurewho can login to your HTTP server.
Each line has the following format:
<name>.<argument> = <value>
where<name> is used to group arguments into authenticationentries. Example:
foo.prefix = hg.intevation.de/mercurialfoo.username = foofoo.password = barfoo.schemes = http httpsbar.prefix = secure.example.orgbar.key = path/to/file.keybar.cert = path/to/file.certbar.schemes = https
Supported arguments:
If no suitable authentication entry is found, the user is promptedfor credentials as usual if required by the remote.
In addition to pre-defined template keywords, commit log specific onebelow can be used for customization:
For example, the template configuration below shows as same text asone shown by default:
[committemplate]changeset = {desc}\n\n HG: Enter commit message. Lines beginning with 'HG:' are removed. HG: {extramsg} HG: -- HG: user: {author}\n{ifeq(p2rev, "-1", "", "HG: branch merge\n") }HG: branch '{branch}'\n{if(activebookmark, "HG: bookmark '{activebookmark}'\n") }{subrepos % "HG: subrepo {subrepo}\n" }{file_adds % "HG: added {file}\n" }{file_mods % "HG: changed {file}\n" }{file_dels % "HG: removed {file}\n" }{if(files, "", "HG: no files changed\n")}Note
For some problematic encodings (seehg help win32mbcs fordetail), this customization should be configured carefully, toavoid showing broken characters.
For example, if a multibyte character ending with backslash (0x5c) isfollowed by the ASCII character 'n' in the customized template,the sequence of backslash and 'n' is treated as line-feed unexpectedly(and the multibyte character is broken, too).
Customized template is used for commands below (--edit may berequired):
Configuring items below instead ofchangeset allows showingcustomized message only for specific actions, or showing differentmessages for each action.
These dot-separated lists of names are treated as hierarchical ones.For example,changeset.tag.remove customizes the commit messageonly forhg tag--remove, butchangeset.tag customizes thecommit message forhg tag regardless of--remove option.
When the external editor is invoked for a commit, the correspondingdot-separated list of names without thechangeset. prefix(e.g.commit.normal.normal) is in theHGEDITFORM environmentvariable.
In this section, items other thanchangeset can be referred fromothers. For example, the configuration to list committed files upbelow can be referred as{listupfiles}:
[committemplate]listupfiles = {file_adds % "HG: added {file}\n" }{file_mods % "HG: changed {file}\n" }{file_dels % "HG: removed {file}\n" }{if(files, "", "HG: no files changed\n")}Filters for transforming files on checkout/checkin. This wouldtypically be used for newline processing or otherlocalization/canonicalization of files.
Filters consist of a filter pattern followed by a filter command.Filter patterns are globs by default, rooted at the repository root.For example, to match any file ending in.txt in the rootdirectory only, use the pattern*.txt. To match any file endingin.c anywhere in the repository, use the pattern**.c.For each file only the first matching filter applies.
The filter command can start with a specifier, eitherpipe: ortempfile:. If no specifier is given,pipe: is used by default.
Apipe: command must accept data on stdin and return the transformeddata on stdout.
Pipe example:
[encode]# uncompress gzip files on checkin to improve delta compression# note: not necessarily a good idea, just an example*.gz = pipe: gunzip[decode]# recompress gzip files when writing them to the working dir (we# can safely omit "pipe:", because it's the default)*.gz = gzip
Atempfile: command is a template. The stringINFILE is replacedwith the name of a temporary file that contains the data to befiltered by the command. The stringOUTFILE is replaced with the nameof an empty temporary file, where the filtered data must be written bythe command.
Note
The tempfile mechanism is recommended for Windows systems,where the standard shell I/O redirection operators often havestrange effects and may corrupt the contents of your files.
This filter mechanism is used internally by theeol extension totranslate line ending characters between Windows (CRLF) and Unix (LF)format. We suggest you use theeol extension for convenience.
(defaults are deprecated. Don't use them. Use aliases instead.)
Use the[defaults] section to define command defaults, i.e. thedefault options/arguments to pass to the specified commands.
The following example makeshg log run in verbose mode, andhg status show only the modified files, by default:
[defaults]log = -vstatus = -m
The actual commands, instead of their aliases, must be used whendefining command defaults. The command defaults will also be appliedto the aliases of the commands defined.
Settings used when displaying diffs. Everything except forunifiedis a Boolean and defaults to False. Seehg help config.annotatefor related options for the annotate command.
Settings for extensions that send email messages.
Optional. Comma-separated list of character sets consideredconvenient for recipients. Addresses, headers, and parts notcontaining patches of outgoing messages will be encoded in thefirst character set to which conversion from local encoding($HGENCODING,ui.fallbackencoding) succeeds. If correctconversion fails, the text in question is sent as is.(default: '')
Order of outgoing email character sets:
Email example:
[email]from = Joseph User <joe.user@example.com>method = /usr/sbin/sendmail# charsets for western Europeans# us-ascii, utf-8 omitted, as they are tried first and lastcharsets = iso-8859-1, iso-8859-15, windows-1252
Mercurial has an extension mechanism for adding new features. Toenable an extension, create an entry for it in this section.
If you know that the extension is already in Python's search path,you can give the name of the module, followed by=, with nothingafter the=.
Otherwise, give a name that you choose, followed by=, followed bythe path to the.py file (including the file name extension) thatdefines the extension.
To explicitly disable an extension that is enabled in an hgrc ofbroader scope, prepend its path with!, as infoo = !/ext/pathorfoo = ! when path is not supplied.
Example for~/.hgrc:
[extensions]# (the color extension will get loaded from Mercurial's path)color =# (this extension will get loaded from the file specified)myfeature = ~/.hgext/myfeature.py
Enable or disable the "generaldelta" repository format which improvesrepository compression by allowing "revlog" to store delta against arbitraryrevision instead of the previous stored one. This provides significantimprovement for repositories with branches.
Repositories with this on-disk format require Mercurial version 1.9.
Enabled by default.
Enable or disable the "dotencode" repository format which enhancesthe "fncache" repository format (which has to be enabled to usedotencode) to avoid issues with filenames starting with ._ onMac OS X and spaces on Windows.
Repositories with this on-disk format require Mercurial version 1.7.
Enabled by default.
Enable or disable the "fncache" repository format which enhancesthe "store" repository format (which has to be enabled to usefncache) to allow longer filenames and avoids using Windowsreserved names, e.g. "nul".
Repositories with this on-disk format require Mercurial version 1.1.
Enabled by default.
Enable or disable the "store" repository format which improvescompatibility with systems that fold case or otherwise manglefilenames. Disabling this option will allow you to store longer filenamesin some situations at the expense of compatibility.
Repositories with this on-disk format require Mercurial version 0.9.4.
Enabled by default.
Web graph view configuration. This section let you change graphelements display properties by branches, for instance to make thedefault branch stand out.
Each line has the following format:
<branch>.<argument> = <value>
where<branch> is the name of the branch beingcustomized. Example:
[graph]# 2px widthdefault.width = 2# red colordefault.color = FF0000
Supported arguments:
Commands or Python functions that get automatically executed byvarious actions such as starting or finishing a commit. Multiplehooks can be run for the same action by appending a suffix to theaction. Overriding a site-wide hook can be done by changing itsvalue or setting it to an empty string. Hooks can be prioritizedby adding a prefix ofpriority. to the hook name on a new lineand setting the priority. The default priority is 0.
Example.hg/hgrc:
[hooks]# update working directory after adding changesetschangegroup.update = hg update# do not use the site-wide hookincoming =incoming.email = /my/email/hookincoming.autobuild = /my/build/hook# force autobuild hook to run before other incoming hookspriority.incoming.autobuild = 1
Most hooks are run with environment variables set that give usefuladditional information. For each hook below, the environmentvariables it is passed are listed with names of the form$HG_foo.
Note
It is generally better to use standard hooks rather than thegeneric pre- and post- command hooks as they are guaranteed to becalled in the appropriate contexts for influencing transactions.Also, hooks like "commit" will be called in all contexts thatgenerate a commit (e.g. tag) and not just the commit command.
Note
Environment variables with empty values may not be passed tohooks on platforms such as Windows. As an example,$HG_PARENT2will have an empty value under Unix-like platforms for non-mergechangesets, while it will not be available at all under Windows.
The syntax for Python hooks is as follows:
hookname = python:modulename.submodule.callablehookname = python:/path/to/python/module.py:callable
Python hooks are run within the Mercurial process. Each hook iscalled with at least three keyword arguments: a ui object (keywordui), a repository object (keywordrepo), and ahooktypekeyword that tells what kind of hook is used. Arguments listed asenvironment variables above are passed as keyword arguments, with noHG_ prefix, and names in lower case.
If a Python hook returns a "true" value or raises an exception, thisis treated as a failure.
(Deprecated. Use[hostsecurity]'sfingerprints options instead.)
Fingerprints of the certificates of known HTTPS servers.
A HTTPS connection to a server with a fingerprint configured here willonly succeed if the servers certificate matches the fingerprint.This is very similar to how ssh known hosts works.
The fingerprint is the SHA-1 hash value of the DER encoded certificate.Multiple values can be specified (separated by spaces or commas). This canbe used to define both old and new fingerprints while a host transitionsto a new certificate.
The CA chain and web.cacerts is not used for servers with a fingerprint.
For example:
[hostfingerprints]hg.intevation.de = fc:e2:8d:d9:51:cd:cb:c1:4d:18:6b:b7:44:8d:49:72:57:e6:cd:33hg.intevation.org = fc:e2:8d:d9:51:cd:cb:c1:4d:18:6b:b7:44:8d:49:72:57:e6:cd:33
Used to specify global and per-host security settings for connecting toother machines.
The following options control default behavior for all hosts.
Defines the cryptographic ciphers to use for connections.
Value must be a valid OpenSSL Cipher List Format as documented athttps://www.openssl.org/docs/manmaster/apps/ciphers.html#CIPHER-LIST-FORMAT.
This setting is for advanced users only. Setting to incorrect valuescan significantly lower connection security or decrease performance.You have been warned.
This option requires Python 2.7.
Defines the minimum channel encryption protocol to use.
By default, the highest version of TLS supported by both client and serveris used.
Allowed values are:tls1.0,tls1.1,tls1.2.
When running on an old Python version, onlytls1.0 is allowed sinceold versions of Python only support up to TLS 1.0.
When running a Python that supports modern TLS versions, the default istls1.1.tls1.0 can still be used to allow TLS 1.0. However, thisweakens security and should only be used as a feature of last resort ifa server does not support TLS 1.1+.
Options in the[hostsecurity] section can have the formhostname:setting. This allows multiple settings to be defined on aper-host basis.
The following per-host settings can be defined.
A list of hashes of the DER encoded peer/remote certificate. Values havethe formalgorithm:fingerprint. e.g.sha256:c3ab8ff13720e8ad9047dd39466b3c8974e592c2fa383d4a3960714caef0c4f2.
The following algorithms/prefixes are supported:sha1,sha256,sha512.
Use ofsha256 orsha512 is preferred.
If a fingerprint is specified, the CA chain is not validated for thishost and Mercurial will require the remote certificate to match oneof the fingerprints specified. This means if the server updates itscertificate, Mercurial will abort until a new fingerprint is defined.This can provide stronger security than traditional CA-based validationat the expense of convenience.
This option takes precedence oververifycertsfile.
Path to file a containing a list of PEM encoded certificates used toverify the server certificate. Environment variables and~userconstructs are expanded in the filename.
The server certificate or the certificate's certificate authority (CA)must match a certificate from this file or certificate verificationwill fail and connections to the server will be refused.
If defined, only certificates provided by this file will be used:web.cacerts and any system/default certificates will not beused.
This option has no effect if the per-hostfingerprints optionis set.
The format of the file is as follows:
-----BEGIN CERTIFICATE-----... (certificate in base64 PEM encoding) ...-----END CERTIFICATE----------BEGIN CERTIFICATE-----... (certificate in base64 PEM encoding) ...-----END CERTIFICATE-----
For example:
[hostsecurity]hg.example.com:fingerprints = sha256:c3ab8ff13720e8ad9047dd39466b3c8974e592c2fa383d4a3960714caef0c4f2hg2.example.com:fingerprints = sha1:914f1aff87249c09b6859b88b1906d30756491ca, sha1:fc:e2:8d:d9:51:cd:cb:c1:4d:18:6b:b7:44:8d:49:72:57:e6:cd:33foo.example.com:verifycertsfile = /etc/ssl/trusted-ca-certs.pem
To change the default minimum protocol version to TLS 1.2 but to allow TLS 1.1when connecting tohg.example.com:
[hostsecurity]minimumprotocol = tls1.2hg.example.com:minimumprotocol = tls1.1
Used to access web-based Mercurial repositories through a HTTPproxy.
This section specifies behavior during merges and updates.
This section specifies merge tools to associate with particular filepatterns. Tools matched here will take precedence over the defaultmerge tool. Patterns are globs by default, rooted at the repositoryroot.
Example:
[merge-patterns]**.c = kdiff3**.jpg = myimgmerge
This section configures external merge tools to use for file-levelmerges. This section has likely been preconfigured at install time.Usehg configmerge-tools to check the existing configuration.Also seehg helpmerge-tools for more details.
Example~/.hgrc:
[merge-tools]# Override stock tool locationkdiff3.executable = ~/bin/kdiff3# Specify command linekdiff3.args = $base $local $other -o $output# Give higher prioritykdiff3.priority = 1# Changing the priority of preconfigured toolmeld.priority = 0# Disable a preconfigured toolvimdiff.disabled = yes# Define new toolmyHtmlTool.args = -m $local $other $base $outputmyHtmlTool.regkey = Software\FooSoftware\HtmlMergemyHtmlTool.priority = 1
Supported arguments:
Either just the name of the executable or its pathname.
(default: the tool name)
A list of merge success-checking options:
Settings used when applying patches, for instance through the 'import'command or with Mercurial Queues extension.
Assigns symbolic names and behavior to repositories.
Options are symbolic names defining the URL or directory that is thelocation of the repository. Example:
[paths]my_server = https://example.com/my_repolocal_path = /home/me/repo
These symbolic names can be used from the command line. To pullfrommy_server:hg pull my_server. To push tolocal_path:hg push local_path.
Options containing colons (:) denote sub-options that can influencebehavior for that specific path. Example:
[paths]my_server = https://example.com/my_pathmy_server:pushurl = ssh://example.com/my_path
The following sub-options can be defined:
A revset defining which revisions to push by default.
Whenhg push is executed without a-r argument, the revsetdefined by this sub-option is evaluated to determine what to push.
For example, a value of. will push the working directory'srevision by default.
Revsets specifying bookmarks will not result in the bookmark beingpushed.
The following special named paths exist:
Specifies default handling of phases. Seehg help phases for moreinformation about working with phases.
Specifies profiling type, format, and file output. Two profilers aresupported: an instrumenting profiler (namedls), and a samplingprofiler (namedstat).
In this section description, 'profiling data' stands for the raw datacollected during profiling, while 'profiling report' stands for astatistical text report generated from the profiling data. Theprofiling is done using lsprof.
Enable the profiler.(default: false)
This is equivalent to passing--profile on the command line.
The type of profiler to use.(default: ls)
Profiling format. Specific to thels instrumenting profiler.(default: text)
Mercurial commands can draw progress bars that are as informative aspossible. Some progress bars only offer indeterminate information, while othershave a definite end point.
Format of the progress bar.
Valid entries for the format field aretopic,bar,number,unit,estimate,speed, anditem.item defaults to thelast 20 characters of the item, but this can be changed by adding either-<num> which would take the last num characters, or+<num> for thefirst num characters.
(default: topic bar number estimate)
Alias definitions for revsets. Seehg help revsets for details.
Controls generic server settings.
Likebundle1.pull but only used if the repository is using thegeneraldelta storage format. (default: True)
Large repositories using thegeneraldelta storage format shouldconsider setting this option because convertinggeneraldeltarepositories to the exchange format required by the bundle1 dataformat can consume a lot of CPU.
Integer between-1 and9 that controls the zlib compression levelfor wire protocol commands that send zlib compressed output (notably thecommands that send repository history data).
The default (-1) uses the default zlib compression level, which islikely equivalent to6.0 means no compression.9 meansmaximum compression.
Setting this option allows server operators to make trade-offs betweenbandwidth and CPU used. Lowering the compression lowers CPU utilizationbut sends more bytes to clients.
This option only impacts the HTTP server.
Configuration for extensions that need to send email messages.
Subrepository source URLs can go stale if a remote server changes nameor becomes temporarily unavailable. This section lets you definerewrite rules of the form:
<pattern> = <replacement>
wherepattern is a regular expression matching a subrepositorysource URL andreplacement is the replacement string used torewrite it. Groups can be matched inpattern and referenced inreplacements. For instance:
http://server/(.*)-hg/ = http://hg.server/\1/
rewriteshttp://server/foo-hg/ intohttp://hg.server/foo/.
Relative subrepository paths are first made absolute, and therewrite rules are then applied on the full (absolute) path. Ifpatterndoesn't match the full path, an attempt is made to apply it on therelative path alone. The rules are applied in definition order.
Alias definitions for templates. Seehg help templates for details.
Use the[templates] section to define template strings.Seehg help templates for details.
Mercurial will not use the settings in the.hg/hgrc file from a repository if it doesn't belong to a trusteduser or to a trusted group, as various hgrc features allow arbitrarycommands to be run. This issue is often encountered when configuringhooks or extensions for shared repositories or servers. However,the web interface will use some safe settings from the[web]section.
This section specifies what users and groups are trusted. Thecurrent user is always trusted. To trust everybody, list a user or agroup with name*. These settings must be placed in analready-trusted file to take effect, such as$HOME/.hgrc of theuser or service running Mercurial.
User interface controls.
Whether the "clone bundles" feature is enabled.
When enabled,hg clone may download and apply a server-advertisedbundle file from a URL instead of using the normal exchange mechanism.
This can likely result in faster and more reliable clones.
(default: True)
Whether failure to apply an advertised "clone bundle" from a servershould result in fallback to a regular clone.
This is disabled by default because servers advertising "clonebundles" often do so to reduce server load. If advertised bundlesstart mass failing and clients automatically fall back to a regularclone, this would add significant and unexpected load to the serversince the server is expecting clone operations to be offloaded topre-generated bundles. Failing fast (the default behavior) ensuresclients don't overwhelm the server when "clone bundle" applicationfails.
(default: False)
Defines preferences for which "clone bundles" to use.
Servers advertising "clone bundles" may advertise multiple availablebundles. Each bundle may have different attributes, such as the bundletype and compression format. This option is used to prefer a particularbundle over another.
The following keys are defined by Mercurial:
Server operators may define custom keys.
Example values:COMPRESSION=bzip2,BUNDLESPEC=gzip-v2, COMPRESSION=gzip.
By default, the first bundle advertised by the server is used.
The template used to print the commit description next to each conflictmarker during merge conflicts. Seehg help templates for the templateformat.
Defaults to showing the hash, tags, branches, bookmarks, author, andthe first line of the commit description.
If you use non-ASCII characters in names for tags, branches, bookmarks,authors, and/or commit descriptions, you must pay attention to encodings ofmanaged files. At template expansion, non-ASCII characters use the encodingspecified by the--encoding global option,HGENCODING or otherenvironment variables that govern your locale. If the encoding of the mergemarkers is different from the encoding of the merged files,serious problems may occur.
An optional external tool thathg import and some extensionswill use for applying patches. By default Mercurial uses aninternal patch utility. The external tool must work as the commonUnixpatch program. In particular, it must accept a-pargument to strip patch headers, a-d argument to specify thecurrent directory, a file name to patch, and a patch file to takefrom stdin.
It is possible to specify a patch tool together with extraarguments. For example, setting this option topatch--mergewill use thepatch program with its 2-way merge option.
Check for portable filenames. Can bewarn,ignore orabort.(default:warn)
The committer of a changeset created when running "commit".Typically a person's name and email address, e.g.Fred Widget<fred@example.com>. Environment variables in theusername are expanded.
(default:$EMAIL orusername@hostname. If the username inhgrc is empty, e.g. if the system admin setusername = in thesystem hgrc, it has to be specified manually or in a differenthgrc file)
Web interface configuration. The settings in this section apply toboth the builtin webserver (started byhg serve) and the script yourun through a webserver (hgweb.cgi and the derivatives for FastCGIand WSGI).
The Mercurial webserver does no authentication (it does not prompt forusernames and passwords to validatewho users are), but it does doauthorization (it grants or denies access forauthenticated usersbased on settings in this section). You must either configure yourwebserver to do authentication for you, or disable the authorizationchecks.
For a quick setup in a trusted environment, e.g., a private LAN, whereyou want it to accept pushes from anybody, you can use the followingcommand line:
$ hg --config web.allow_push=* --config web.push_ssl=False serve
Note that this will allow anybody to push anything to the server andthat this should not be used for public servers.
The full set of options is:
Path to file containing a list of PEM encoded certificateauthority certificates. Environment variables and~userconstructs are expanded in the filename. If specified on theclient, then it will verify the identity of remote HTTPS serverswith these certificates.
To disable SSL verification temporarily, specify--insecure fromcommand line.
You can use OpenSSL's CA certificate file if your platform hasone. On most Linux systems this will be/etc/ssl/certs/ca-certificates.crt. Otherwise you will have togenerate this file manually. The form must be as follows:
-----BEGIN CERTIFICATE-----... (certificate in base64 PEM encoding) ...-----END CERTIFICATE----------BEGIN CERTIFICATE-----... (certificate in base64 PEM encoding) ...-----END CERTIFICATE-----
Number of lines of context to show in side-by-side file comparison. Ifnegative or the valuefull, whole files are shown. (default: 5)
This setting can be overridden by acontext request parameter to thecomparison command, taking the same values.
List of stringlabels associated with the repository.
Labels are exposed as a template keyword and can be used to customizeoutput. e.g. theindex template can group or filter repositoriesby labels and thesummary template can display additional contentif a specific label is present.
How frequently directory listings re-scan the filesystem for newrepositories, in seconds. This is relevant when wildcards are usedto define paths. Depending on how much filesystem traversal isrequired, refreshing may negatively impact performance.
Values less than or equal to 0 always refresh.(default: 20)
Web substitution filter definition. You can use this section todefine a set of regular expression substitution patterns whichlet you automatically modify the hgweb server output.
The default hgweb templates only apply these substitution patternson the revision description fields. You can apply them anywhereyou want when you create your own templates by adding calls to the"websub" filter (usually after calling the "escape" filter).
This can be used, for example, to convert issue references to linksto your issue tracker, or to convert "markdown-like" syntax intoHTML (see the examples below).
Each entry in this section names a substitution filter.The value of each entry defines the substitution expression itself.The websub expressions follow the old interhg extension syntax,which in turn imitates the Unix sed replacement syntax:
patternname = s/SEARCH_REGEX/REPLACE_EXPRESSION/[i]
You can use any separator other than "/". The final "i" is optionaland indicates that the search must be case insensitive.
Examples:
[websub]issues = s|issue(\d+)|<a href="http://bts.example.org/issue\1">issue\1</a>|iitalic = s/\b_(\S+)_\b/<i>\1<\/i>/bold = s/\*\b(\S+)\b\*/<b>\1<\/b>/
Parallel master/worker configuration. We currently perform workingdirectory updates in parallel on Unix-like systems, which greatlyhelps performance.
Bryan O'Sullivan <bos@serpentine.com>.
Mercurial was written by Matt Mackall <mpm@selenic.com>.
This manual page is copyright 2005 Bryan O'Sullivan.Mercurial is copyright 2005-2016 Matt Mackall.Free use of this software is granted under the terms of the GNU GeneralPublic License version 2 or any later version.