Mercurial > hg
changeset 14456:ff4126ce9301
help: move part of hgrc.5 man page config help topic
author | Yun Lee <yun.lee.bj@gmail.com> |
---|---|
date | Mon, 30 May 2011 10:21:39 +0200 |
parents | 59853c30e31e |
children | 5818f5d49127 |
files | doc/hgrc.5.txt mercurial/help/config.txt |
diffstat | 2 files changed, 1158 insertions(+), 1157 deletions(-) [+] |
line wrap: on
line diff
--- a/doc/hgrc.5.txt Mon May 30 10:05:39 2011 +0200 +++ b/doc/hgrc.5.txt Mon May 30 10:21:39 2011 +0200 @@ -22,1163 +22,7 @@ The Mercurial system uses a set of configuration files to control aspects of its behavior. -Files ------ - -Mercurial reads configuration data from several files, if they exist. -The names of these files depend on the system on which Mercurial is -installed. ``*.rc`` files from a single directory are read in -alphabetical order, later ones overriding earlier ones. Where multiple -paths are given below, settings from earlier paths override later -ones. - -| (Unix, Windows) ``<repo>/.hg/hgrc`` - - Per-repository configuration options that only apply in a - particular repository. This file is not version-controlled, and - will not get transferred during a "clone" operation. Options in - this file override options in all other configuration files. On - Unix, most of this file will be ignored if it doesn't belong to a - trusted user or to a trusted group. See the documentation for the - trusted_ section below for more details. - -| (Unix) ``$HOME/.hgrc`` -| (Windows) ``%USERPROFILE%\.hgrc`` -| (Windows) ``%USERPROFILE%\Mercurial.ini`` -| (Windows) ``%HOME%\.hgrc`` -| (Windows) ``%HOME%\Mercurial.ini`` - - Per-user configuration file(s), for the user running Mercurial. On - Windows 9x, ``%HOME%`` is replaced by ``%APPDATA%``. Options in these - files apply to all Mercurial commands executed by this user in any - directory. Options in these files override per-system and per-installation - options. - -| (Unix) ``/etc/mercurial/hgrc`` -| (Unix) ``/etc/mercurial/hgrc.d/*.rc`` - - Per-system configuration files, for the system on which Mercurial - is running. Options in these files apply to all Mercurial commands - executed by any user in any directory. Options in these files - override per-installation options. - -| (Unix) ``<install-root>/etc/mercurial/hgrc`` -| (Unix) ``<install-root>/etc/mercurial/hgrc.d/*.rc`` - - Per-installation configuration files, searched for in the - directory where Mercurial is installed. ``<install-root>`` is the - parent directory of the **hg** executable (or symlink) being run. For - example, if installed in ``/shared/tools/bin/hg``, Mercurial will look - in ``/shared/tools/etc/mercurial/hgrc``. Options in these files apply - to all Mercurial commands executed by any user in any directory. - -| (Windows) ``<install-dir>\Mercurial.ini`` -| (Windows) ``<install-dir>\hgrc.d\*.rc`` -| (Windows) ``HKEY_LOCAL_MACHINE\SOFTWARE\Mercurial`` - - Per-installation/system configuration files, for the system on - which Mercurial is running. Options in these files apply to all - Mercurial commands executed by any user in any directory. Registry - keys contain PATH-like strings, every part of which must reference - a ``Mercurial.ini`` file or be a directory where ``*.rc`` files will - be read. Mercurial checks each of these locations in the specified - order until one or more configuration files are detected. If the - pywin32 extensions are not installed, Mercurial will only look for - site-wide configuration in ``C:\Mercurial\Mercurial.ini``. - -Syntax ------- - -A configuration file consists of sections, led by a ``[section]`` header -and followed by ``name = value`` entries (sometimes called -``configuration keys``):: - - [spam] - eggs=ham - green= - eggs - -Each line contains one entry. If the lines that follow are indented, -they are treated as continuations of that entry. Leading whitespace is -removed 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 mercurial -will use the value that was configured last. As an example:: - - [spam] - eggs=large - ham=serrano - eggs=small - -This would set the configuration key named ``eggs`` to ``small``. - -It is also possible to define a section multiple times. A section can -be redefined on the same and/or on different hgrc files. For example:: - - [foo] - eggs=large - ham=serrano - eggs=small - - [bar] - eggs=ham - green= - eggs - - [foo] - ham=prosciutto - eggs=medium - bread=toasted - -This would set the ``eggs``, ``ham``, and ``bread`` configuration keys -of the ``foo`` section to ``medium``, ``prosciutto``, and ``toasted``, -respectively. As you can see there only thing that matters is the last -value that was set for each of the configuration keys. - -If a configuration key is set multiple times in different -configuration files the final value will depend on the order in which -the different configuration files are read, with settings from earlier -paths overriding later ones as described on the ``Files`` section -above. - -A line of the form ``%include file`` will include ``file`` into the -current configuration file. The inclusion is recursive, which means -that included files can include other files. Filenames are relative to -the configuration file in which the ``%include`` directive is found. -Environment variables and ``~user`` constructs are expanded in -``file``. 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 remove ``name`` from the current -section, 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 are -placed in double quotation marks:: - - allow_read = "John Doe, PhD", brian, betty - -Quotation marks can be escaped by prefixing them with a backslash. Only -quotation marks at the beginning of a word is counted as a quotation -(e.g., ``foo"bar baz`` is the list of ``foo"bar`` and ``baz``). - -Sections --------- - -This section describes the different sections that may appear in a -Mercurial "hgrc" file, the purpose of each section, its possible keys, -and their possible values. - -``alias`` -""""""""" - -Defines command aliases. -Aliases allow you to define your own commands in terms of other -commands (or aliases), optionally including arguments. Positional -arguments in the form of ``$1``, ``$2``, etc in the alias definition -are expanded by Mercurial before execution. Positional arguments not -already used by ``$N`` in the definition are put at the end of the -command 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 command ``latest`` that shows only the five most recent -changesets. You can define subsequent aliases using earlier ones:: - - stable5 = latest -b stable - -.. note:: It is possible to create aliases with the same names as - existing commands, which will then override the original - definitions. This is almost always a bad idea! - -An alias can start with an exclamation point (``!``) to make it a -shell alias. A shell alias is executed with the shell and will let you -run arbitrary commands. As an example, :: - - echo = !echo - -will let you do ``hg echo foo`` to have ``foo`` printed in your -terminal. A better example might be:: - - purge = !$HG status --no-status --unknown -0 | xargs -0 rm - -which will make ``hg purge`` delete all unknown files in the -repository in the same manner as the purge extension. - -Shell aliases are executed in an environment where ``$HG`` expand to -the path of the Mercurial that was used to execute the alias. This is -useful when you want to call further Mercurial commands in a shell -alias, as was done above for the purge alias. In addition, -``$HG_ARGS`` expand to the arguments given to Mercurial. In the ``hg -echo foo`` call above, ``$HG_ARGS`` would expand to ``echo foo``. - -``auth`` -"""""""" - -Authentication credentials for HTTP authentication. This section -allows you to store usernames and passwords for use when logging -*into* HTTP servers. See the web_ configuration section if you want to -configure *who* can login to your HTTP server. - -Each line has the following format:: - - <name>.<argument> = <value> - -where ``<name>`` is used to group arguments into authentication -entries. Example:: - - foo.prefix = hg.intevation.org/mercurial - foo.username = foo - foo.password = bar - foo.schemes = http https - - bar.prefix = secure.example.org - bar.key = path/to/file.key - bar.cert = path/to/file.cert - bar.schemes = https - -Supported arguments: - -``prefix`` - Either ``*`` or a URI prefix with or without the scheme part. - The authentication entry with the longest matching prefix is used - (where ``*`` matches everything and counts as a match of length - 1). If the prefix doesn't include a scheme, the match is performed - against the URI with its scheme stripped as well, and the schemes - argument, q.v., is then subsequently consulted. -``username`` - Optional. Username to authenticate with. If not given, and the - remote site requires basic or digest authentication, the user will - be prompted for it. Environment variables are expanded in the - username letting you do ``foo.username = $USER``. -``password`` - Optional. Password to authenticate with. If not given, and the - remote site requires basic or digest authentication, the user - will be prompted for it. -``key`` - Optional. PEM encoded client certificate key file. Environment - variables are expanded in the filename. -``cert`` - Optional. PEM encoded client certificate chain file. Environment - variables are expanded in the filename. -``schemes`` - Optional. Space separated list of URI schemes to use this - authentication entry with. Only used if the prefix doesn't include - a scheme. Supported schemes are http and https. They will match - static-http and static-https respectively, as well. - Default: https. - -If no suitable authentication entry is found, the user is prompted -for credentials as usual if required by the remote. - - -``decode/encode`` -""""""""""""""""" - -Filters for transforming files on checkout/checkin. This would -typically be used for newline processing or other -localization/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 root -directory only, use the pattern ``*.txt``. To match any file ending -in ``.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, either ``pipe:`` or -``tempfile:``. If no specifier is given, ``pipe:`` is used by default. - -A ``pipe:`` command must accept data on stdin and return the transformed -data 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 - -A ``tempfile:`` command is a template. The string ``INFILE`` is replaced -with the name of a temporary file that contains the data to be -filtered by the command. The string ``OUTFILE`` is replaced with the name -of an empty temporary file, where the filtered data must be written by -the command. - -.. note:: The tempfile mechanism is recommended for Windows systems, - where the standard shell I/O redirection operators often have - strange effects and may corrupt the contents of your files. - -This filter mechanism is used internally by the ``eol`` extension to -translate line ending characters between Windows (CRLF) and Unix (LF) -format. We suggest you use the ``eol`` extension for convenience. - - -``defaults`` -"""""""""""" - -(defaults are deprecated. Don't use them. Use aliases instead) - -Use the ``[defaults]`` section to define command defaults, i.e. the -default options/arguments to pass to the specified commands. - -The following example makes :hg:`log` run in verbose mode, and -:hg:`status` show only the modified files, by default:: - - [defaults] - log = -v - status = -m - -The actual commands, instead of their aliases, must be used when -defining command defaults. The command defaults will also be applied -to the aliases of the commands defined. - - -``diff`` -"""""""" - -Settings used when displaying diffs. Everything except for ``unified`` is a -Boolean and defaults to False. - -``git`` - Use git extended diff format. -``nodates`` - Don't include dates in diff headers. -``showfunc`` - Show which function each change is in. -``ignorews`` - Ignore white space when comparing lines. -``ignorewsamount`` - Ignore changes in the amount of white space. -``ignoreblanklines`` - Ignore changes whose lines are all blank. -``unified`` - Number of lines of context to show. - -``email`` -""""""""" - -Settings for extensions that send email messages. - -``from`` - Optional. Email address to use in "From" header and SMTP envelope - of outgoing messages. -``to`` - Optional. Comma-separated list of recipients' email addresses. -``cc`` - Optional. Comma-separated list of carbon copy recipients' - email addresses. -``bcc`` - Optional. Comma-separated list of blind carbon copy recipients' - email addresses. -``method`` - Optional. Method to use to send email messages. If value is ``smtp`` - (default), use SMTP (see the SMTP_ section for configuration). - Otherwise, use as name of program to run that acts like sendmail - (takes ``-f`` option for sender, list of recipients on command line, - message on stdin). Normally, setting this to ``sendmail`` or - ``/usr/sbin/sendmail`` is enough to use sendmail to send messages. -``charsets`` - Optional. Comma-separated list of character sets considered - convenient for recipients. Addresses, headers, and parts not - containing patches of outgoing messages will be encoded in the - first character set to which conversion from local encoding - (``$HGENCODING``, ``ui.fallbackencoding``) succeeds. If correct - conversion fails, the text in question is sent as is. Defaults to - empty (explicit) list. - - Order of outgoing email character sets: - - 1. ``us-ascii``: always first, regardless of settings - 2. ``email.charsets``: in order given by user - 3. ``ui.fallbackencoding``: if not in email.charsets - 4. ``$HGENCODING``: if not in email.charsets - 5. ``utf-8``: always last, regardless of settings - -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 last - charsets = iso-8859-1, iso-8859-15, windows-1252 - - -``extensions`` -"""""""""""""" - -Mercurial has an extension mechanism for adding new features. To -enable 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 nothing -after the ``=``. - -Otherwise, give a name that you choose, followed by ``=``, followed by -the path to the ``.py`` file (including the file name extension) that -defines the extension. - -To explicitly disable an extension that is enabled in an hgrc of -broader scope, prepend its path with ``!``, as in ``foo = !/ext/path`` -or ``foo = !`` when path is not supplied. - -Example for ``~/.hgrc``:: - - [extensions] - # (the mq extension will get loaded from Mercurial's path) - mq = - # (this extension will get loaded from the file specified) - myfeature = ~/.hgext/myfeature.py - - -``hostfingerprints`` -"""""""""""""""""""" - -Fingerprints of the certificates of known HTTPS servers. -A HTTPS connection to a server with a fingerprint configured here will -only 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. -The CA chain and web.cacerts is not used for servers with a fingerprint. - -For example:: - - [hostfingerprints] - hg.intevation.org = 38:76:52:7c:87:26:9a:8f:4a:f8:d3:de:08:45:3b:ea:d6:4b:ee:cc - -This feature is only supported when using Python 2.6 or later. - - -``format`` -"""""""""" - -``usestore`` - Enable or disable the "store" repository format which improves - compatibility with systems that fold case or otherwise mangle - filenames. Enabled by default. Disabling this option will allow - you to store longer filenames in some situations at the expense of - compatibility and ensures that the on-disk format of newly created - repositories will be compatible with Mercurial before version 0.9.4. - -``usefncache`` - Enable or disable the "fncache" repository format which enhances - the "store" repository format (which has to be enabled to use - fncache) to allow longer filenames and avoids using Windows - reserved names, e.g. "nul". Enabled by default. Disabling this - option ensures that the on-disk format of newly created - repositories will be compatible with Mercurial before version 1.1. - -``dotencode`` - Enable or disable the "dotencode" repository format which enhances - the "fncache" repository format (which has to be enabled to use - dotencode) to avoid issues with filenames starting with ._ on - Mac OS X and spaces on Windows. Enabled by default. Disabling this - option ensures that the on-disk format of newly created - repositories will be compatible with Mercurial before version 1.7. - -``merge-patterns`` -"""""""""""""""""" - -This section specifies merge tools to associate with particular file -patterns. Tools matched here will take precedence over the default -merge tool. Patterns are globs by default, rooted at the repository -root. - -Example:: - - [merge-patterns] - **.c = kdiff3 - **.jpg = myimgmerge - -``merge-tools`` -""""""""""""""" - -This section configures external merge tools to use for file-level -merges. - -Example ``~/.hgrc``:: - - [merge-tools] - # Override stock tool location - kdiff3.executable = ~/bin/kdiff3 - # Specify command line - kdiff3.args = $base $local $other -o $output - # Give higher priority - kdiff3.priority = 1 - - # Define new tool - myHtmlTool.args = -m $local $other $base $output - myHtmlTool.regkey = Software\FooSoftware\HtmlMerge - myHtmlTool.priority = 1 - -Supported arguments: - -``priority`` - The priority in which to evaluate this tool. - Default: 0. -``executable`` - Either just the name of the executable or its pathname. On Windows, - the path can use environment variables with ${ProgramFiles} syntax. - Default: the tool name. -``args`` - The arguments to pass to the tool executable. You can refer to the - files being merged as well as the output file through these - variables: ``$base``, ``$local``, ``$other``, ``$output``. - Default: ``$local $base $other`` -``premerge`` - Attempt to run internal non-interactive 3-way merge tool before - launching external tool. Options are ``true``, ``false``, or ``keep`` - to leave markers in the file if the premerge fails. - Default: True -``binary`` - This tool can merge binary files. Defaults to False, unless tool - was selected by file pattern match. -``symlink`` - This tool can merge symlinks. Defaults to False, even if tool was - selected by file pattern match. -``check`` - A list of merge success-checking options: - - ``changed`` - Ask whether merge was successful when the merged file shows no changes. - ``conflicts`` - Check whether there are conflicts even though the tool reported success. - ``prompt`` - Always prompt for merge success, regardless of success reported by tool. - -``checkchanged`` - True is equivalent to ``check = changed``. - Default: False -``checkconflicts`` - True is equivalent to ``check = conflicts``. - Default: False -``fixeol`` - Attempt to fix up EOL changes caused by the merge tool. - Default: False -``gui`` - This tool requires a graphical interface to run. Default: False -``regkey`` - Windows registry key which describes install location of this - tool. Mercurial will search for this key first under - ``HKEY_CURRENT_USER`` and then under ``HKEY_LOCAL_MACHINE``. - Default: None -``regkeyalt`` - An alternate Windows registry key to try if the first key is not - found. The alternate key uses the same ``regname`` and ``regappend`` - semantics of the primary key. The most common use for this key - is to search for 32bit applications on 64bit operating systems. - Default: None -``regname`` - Name of value to read from specified registry key. Defaults to the - unnamed (default) value. -``regappend`` - String to append to the value read from the registry, typically - the executable name of the tool. - Default: None - - -``hooks`` -""""""""" - -Commands or Python functions that get automatically executed by -various actions such as starting or finishing a commit. Multiple -hooks can be run for the same action by appending a suffix to the -action. Overriding a site-wide hook can be done by changing its -value or setting it to an empty string. - -Example ``.hg/hgrc``:: - - [hooks] - # update working directory after adding changesets - changegroup.update = hg update - # do not use the site-wide hook - incoming = - incoming.email = /my/email/hook - incoming.autobuild = /my/build/hook - -Most hooks are run with environment variables set that give useful -additional information. For each hook below, the environment -variables it is passed are listed with names of the form ``$HG_foo``. - -``changegroup`` - Run after a changegroup has been added via push, pull or unbundle. - ID of the first new changeset is in ``$HG_NODE``. URL from which - changes came is in ``$HG_URL``. -``commit`` - Run after a changeset has been created in the local repository. ID - of the newly created changeset is in ``$HG_NODE``. Parent changeset - IDs are in ``$HG_PARENT1`` and ``$HG_PARENT2``. -``incoming`` - Run after a changeset has been pulled, pushed, or unbundled into - the local repository. The ID of the newly arrived changeset is in - ``$HG_NODE``. URL that was source of changes came is in ``$HG_URL``. -``outgoing`` - Run after sending changes from local repository to another. ID of - first changeset sent is in ``$HG_NODE``. Source of operation is in - ``$HG_SOURCE``; see "preoutgoing" hook for description. -``post-<command>`` - Run after successful invocations of the associated command. The - contents of the command line are passed as ``$HG_ARGS`` and the result - code in ``$HG_RESULT``. Parsed command line arguments are passed as - ``$HG_PATS`` and ``$HG_OPTS``. These contain string representations of - the python data internally passed to <command>. ``$HG_OPTS`` is a - dictionary of options (with unspecified options set to their defaults). - ``$HG_PATS`` is a list of arguments. Hook failure is ignored. -``pre-<command>`` - Run before executing the associated command. The contents of the - command line are passed as ``$HG_ARGS``. Parsed command line arguments - are passed as ``$HG_PATS`` and ``$HG_OPTS``. These contain string - representations of the data internally passed to <command>. ``$HG_OPTS`` - is a dictionary of options (with unspecified options set to their - defaults). ``$HG_PATS`` is a list of arguments. If the hook returns - failure, the command doesn't execute and Mercurial returns the failure - code. -``prechangegroup`` - Run before a changegroup is added via push, pull or unbundle. Exit - status 0 allows the changegroup to proceed. Non-zero status will - cause the push, pull or unbundle to fail. URL from which changes - will come is in ``$HG_URL``. -``precommit`` - Run before starting a local commit. Exit status 0 allows the - commit to proceed. Non-zero status will cause the commit to fail. - Parent changeset IDs are in ``$HG_PARENT1`` and ``$HG_PARENT2``. -``prelistkeys`` - Run before listing pushkeys (like bookmarks) in the - repository. Non-zero status will cause failure. The key namespace is - in ``$HG_NAMESPACE``. -``preoutgoing`` - Run before collecting changes to send from the local repository to - another. Non-zero status will cause failure. This lets you prevent - pull over HTTP or SSH. Also prevents against local pull, push - (outbound) or bundle commands, but not effective, since you can - just copy files instead then. Source of operation is in - ``$HG_SOURCE``. If "serve", operation is happening on behalf of remote - SSH or HTTP repository. If "push", "pull" or "bundle", operation - is happening on behalf of repository on same system. -``prepushkey`` - Run before a pushkey (like a bookmark) is added to the - repository. Non-zero status will cause the key to be rejected. The - key namespace is in ``$HG_NAMESPACE``, the key is in ``$HG_KEY``, - the old value (if any) is in ``$HG_OLD``, and the new value is in - ``$HG_NEW``. -``pretag`` - Run before creating a tag. Exit status 0 allows the tag to be - created. Non-zero status will cause the tag to fail. ID of - changeset to tag is in ``$HG_NODE``. Name of tag is in ``$HG_TAG``. Tag is - local if ``$HG_LOCAL=1``, in repository if ``$HG_LOCAL=0``. -``pretxnchangegroup`` - Run after a changegroup has been added via push, pull or unbundle, - but before the transaction has been committed. Changegroup is - visible to hook program. This lets you validate incoming changes - before accepting them. Passed the ID of the first new changeset in - ``$HG_NODE``. Exit status 0 allows the transaction to commit. Non-zero - status will cause the transaction to be rolled back and the push, - pull or unbundle will fail. URL that was source of changes is in - ``$HG_URL``. -``pretxncommit`` - Run after a changeset has been created but the transaction not yet - committed. Changeset is visible to hook program. This lets you - validate commit message and changes. Exit status 0 allows the - commit to proceed. Non-zero status will cause the transaction to - be rolled back. ID of changeset is in ``$HG_NODE``. Parent changeset - IDs are in ``$HG_PARENT1`` and ``$HG_PARENT2``. -``preupdate`` - Run before updating the working directory. Exit status 0 allows - the update to proceed. Non-zero status will prevent the update. - Changeset ID of first new parent is in ``$HG_PARENT1``. If merge, ID - of second new parent is in ``$HG_PARENT2``. -``listkeys`` - Run after listing pushkeys (like bookmarks) in the repository. The - key namespace is in ``$HG_NAMESPACE``. ``$HG_VALUES`` is a - dictionary containing the keys and values. -``pushkey`` - Run after a pushkey (like a bookmark) is added to the - repository. The key namespace is in ``$HG_NAMESPACE``, the key is in - ``$HG_KEY``, the old value (if any) is in ``$HG_OLD``, and the new - value is in ``$HG_NEW``. -``tag`` - Run after a tag is created. ID of tagged changeset is in ``$HG_NODE``. - Name of tag is in ``$HG_TAG``. Tag is local if ``$HG_LOCAL=1``, in - repository if ``$HG_LOCAL=0``. -``update`` - Run after updating the working directory. Changeset ID of first - new parent is in ``$HG_PARENT1``. If merge, ID of second new parent is - in ``$HG_PARENT2``. If the update succeeded, ``$HG_ERROR=0``. If the - update failed (e.g. because conflicts not resolved), ``$HG_ERROR=1``. - -.. note:: It is generally better to use standard hooks rather than the - generic pre- and post- command hooks as they are guaranteed to be - called in the appropriate contexts for influencing transactions. - Also, hooks like "commit" will be called in all contexts that - generate a commit (e.g. tag) and not just the commit command. - -.. note:: Environment variables with empty values may not be passed to - hooks on platforms such as Windows. As an example, ``$HG_PARENT2`` - will have an empty value under Unix-like platforms for non-merge - changesets, while it will not be available at all under Windows. - -The syntax for Python hooks is as follows:: - - hookname = python:modulename.submodule.callable - hookname = python:/path/to/python/module.py:callable - -Python hooks are run within the Mercurial process. Each hook is -called with at least three keyword arguments: a ui object (keyword -``ui``), a repository object (keyword ``repo``), and a ``hooktype`` -keyword that tells what kind of hook is used. Arguments listed as -environment variables above are passed as keyword arguments, with no -``HG_`` prefix, and names in lower case. - -If a Python hook returns a "true" value or raises an exception, this -is treated as a failure. - - -``http_proxy`` -"""""""""""""" - -Used to access web-based Mercurial repositories through a HTTP -proxy. - -``host`` - Host name and (optional) port of the proxy server, for example - "myproxy:8000". -``no`` - Optional. Comma-separated list of host names that should bypass - the proxy. -``passwd`` - Optional. Password to authenticate with at the proxy server. -``user`` - Optional. User name to authenticate with at the proxy server. -``always`` - Optional. Always use the proxy, even for localhost and any entries - in ``http_proxy.no``. True or False. Default: False. - -``smtp`` -"""""""" - -Configuration for extensions that need to send email messages. - -``host`` - Host name of mail server, e.g. "mail.example.com". -``port`` - Optional. Port to connect to on mail server. Default: 25. -``tls`` - Optional. Method to enable TLS when connecting to mail server: starttls, - smtps or none. Default: none. -``username`` - Optional. User name for authenticating with the SMTP server. - Default: none. -``password`` - Optional. Password for authenticating with the SMTP server. If not - specified, interactive sessions will prompt the user for a - password; non-interactive sessions will fail. Default: none. -``local_hostname`` - Optional. It's the hostname that the sender can use to identify - itself to the MTA. - - -``patch`` -""""""""" - -Settings used when applying patches, for instance through the 'import' -command or with Mercurial Queues extension. - -``eol`` - When set to 'strict' patch content and patched files end of lines - are preserved. When set to ``lf`` or ``crlf``, both files end of - lines are ignored when patching and the result line endings are - normalized to either LF (Unix) or CRLF (Windows). When set to - ``auto``, end of lines are again ignored while patching but line - endings in patched files are normalized to their original setting - on a per-file basis. If target file does not exist or has no end - of line, patch line endings are preserved. - Default: strict. - - -``paths`` -""""""""" - -Assigns symbolic names to repositories. The left side is the -symbolic name, and the right gives the directory or URL that is the -location of the repository. Default paths can be declared by setting -the following entries. - -``default`` - Directory or URL to use when pulling if no source is specified. - Default is set to repository from which the current repository was - cloned. -``default-push`` - Optional. Directory or URL to use when pushing if no destination - is specified. - - -``profiling`` -""""""""""""" - -Specifies profiling format and file output. In this section -description, 'profiling data' stands for the raw data collected -during profiling, while 'profiling report' stands for a statistical -text report generated from the profiling data. The profiling is done -using lsprof. - -``format`` - Profiling format. - Default: text. - - ``text`` - Generate a profiling report. When saving to a file, it should be - noted that only the report is saved, and the profiling data is - not kept. - ``kcachegrind`` - Format profiling data for kcachegrind use: when saving to a - file, the generated file can directly be loaded into - kcachegrind. -``output`` - File path where profiling data or report should be saved. If the - file exists, it is replaced. Default: None, data is printed on - stderr - -``server`` -"""""""""" - -Controls generic server settings. - -``uncompressed`` - Whether to allow clients to clone a repository using the - uncompressed streaming protocol. This transfers about 40% more - data than a regular clone, but uses less memory and CPU on both - server and client. Over a LAN (100 Mbps or better) or a very fast - WAN, an uncompressed streaming clone is a lot faster (~10x) than a - regular clone. Over most WAN connections (anything slower than - about 6 Mbps), uncompressed streaming is slower, because of the - extra data transfer overhead. This mode will also temporarily hold - the write lock while determining what data to transfer. - Default is True. - -``validate`` - Whether to validate the completeness of pushed changesets by - checking that all new file revisions specified in manifests are - present. Default is False. - -``subpaths`` -"""""""""""" - -Defines subrepositories source locations rewriting rules of the form:: - - <pattern> = <replacement> - -Where ``pattern`` is a regular expression matching the source and -``replacement`` is the replacement string used to rewrite it. Groups -can be matched in ``pattern`` and referenced in ``replacements``. For -instance:: - - http://server/(.*)-hg/ = http://hg.server/\1/ - -rewrites ``http://server/foo-hg/`` into ``http://hg.server/foo/``. - -All patterns are applied in definition order. - -``trusted`` -""""""""""" - -Mercurial will not use the settings in the -``.hg/hgrc`` file from a repository if it doesn't belong to a trusted -user or to a trusted group, as various hgrc features allow arbitrary -commands to be run. This issue is often encountered when configuring -hooks 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. The -current user is always trusted. To trust everybody, list a user or a -group with name ``*``. These settings must be placed in an -*already-trusted file* to take effect, such as ``$HOME/.hgrc`` of the -user or service running Mercurial. - -``users`` - Comma-separated list of trusted users. -``groups`` - Comma-separated list of trusted groups. - - -``ui`` -"""""" - -User interface controls. - -``archivemeta`` - Whether to include the .hg_archival.txt file containing meta data - (hashes for the repository base and for tip) in archives created - by the :hg:`archive` command or downloaded via hgweb. - Default is True. -``askusername`` - Whether to prompt for a username when committing. If True, and - neither ``$HGUSER`` nor ``$EMAIL`` has been specified, then the user will - be prompted to enter a username. If no username is entered, the - default ``USER@HOST`` is used instead. - Default is False. -``commitsubrepos`` - Whether to commit modified subrepositories when committing the - parent repository. If False and one subrepository has uncommitted - changes, abort the commit. - Default is True. -``debug`` - Print debugging information. True or False. Default is False. -``editor`` - The editor to use during a commit. Default is ``$EDITOR`` or ``vi``. -``fallbackencoding`` - Encoding to try if it's not possible to decode the changelog using - UTF-8. Default is ISO-8859-1. -``ignore`` - A file to read per-user ignore patterns from. This file should be - in the same format as a repository-wide .hgignore file. This - option supports hook syntax, so if you want to specify multiple - ignore files, you can do so by setting something like - ``ignore.other = ~/.hgignore2``. For details of the ignore file - format, see the |hgignore(5)|_ man page. -``interactive`` - Allow to prompt the user. True or False. Default is True. -``logtemplate`` - Template string for commands that print changesets. -``merge`` - The conflict resolution program to use during a manual merge. - For more information on merge tools see :hg:`help merge-tools`. - For configuring merge tools see the merge-tools_ section. -``portablefilenames`` - Check for portable filenames. Can be ``warn``, ``ignore`` or ``abort``. - Default is ``warn``. - If set to ``warn`` (or ``true``), a warning message is printed on POSIX - platforms, if a file with a non-portable filename is added (e.g. a file - with a name that can't be created on Windows because it contains reserved - parts like ``AUX``, reserved characters like ``:``, or would cause a case - collision with an existing file). - If set to ``ignore`` (or ``false``), no warning is printed. - If set to ``abort``, the command is aborted. - On Windows, this configuration option is ignored and the command aborted. -``quiet`` - Reduce the amount of output printed. True or False. Default is False. -``remotecmd`` - remote command to use for clone/push/pull operations. Default is ``hg``. -``report_untrusted`` - Warn if a ``.hg/hgrc`` file is ignored due to not being owned by a - trusted user or group. True or False. Default is True. -``slash`` - Display paths using a slash (``/``) as the path separator. This - only makes a difference on systems where the default path - separator is not the slash character (e.g. Windows uses the - backslash character (``\``)). - Default is False. -``ssh`` - command to use for SSH connections. Default is ``ssh``. -``strict`` - Require exact command names, instead of allowing unambiguous - abbreviations. True or False. Default is False. -``style`` - Name of style to use for command output. -``timeout`` - The timeout used when a lock is held (in seconds), a negative value - means no timeout. Default is 600. -``traceback`` - Mercurial always prints a traceback when an unknown exception - occurs. Setting this to True will make Mercurial print a traceback - on all exceptions, even those recognized by Mercurial (such as - IOError or MemoryError). Default is False. -``username`` - The committer of a changeset created when running "commit". - Typically a person's name and email address, e.g. ``Fred Widget - <fred@example.com>``. Default is ``$EMAIL`` or ``username@hostname``. If - the username in hgrc is empty, it has to be specified manually or - in a different hgrc file (e.g. ``$HOME/.hgrc``, if the admin set - ``username =`` in the system hgrc). Environment variables in the - username are expanded. -``verbose`` - Increase the amount of output printed. True or False. Default is False. - - -``web`` -""""""" - -Web interface configuration. The settings in this section apply to -both the builtin webserver (started by :hg:`serve`) and the script you -run through a webserver (``hgweb.cgi`` and the derivatives for FastCGI -and WSGI). - -The Mercurial webserver does no authentication (it does not prompt for -usernames and passwords to validate *who* users are), but it does do -authorization (it grants or denies access for *authenticated users* -based on settings in this section). You must either configure your -webserver to do authentication for you, or disable the authorization -checks. - -For a quick setup in a trusted environment, e.g., a private LAN, where -you want it to accept pushes from anybody, you can use the following -command line:: - - $ hg --config web.allow_push=* --config web.push_ssl=False serve - -Note that this will allow anybody to push anything to the server and -that this should not be used for public servers. - -The full set of options is: - -``accesslog`` - Where to output the access log. Default is stdout. -``address`` - Interface address to bind to. Default is all. -``allow_archive`` - List of archive format (bz2, gz, zip) allowed for downloading. - Default is empty. -``allowbz2`` - (DEPRECATED) Whether to allow .tar.bz2 downloading of repository - revisions. - Default is False. -``allowgz`` - (DEPRECATED) Whether to allow .tar.gz downloading of repository - revisions. - Default is False. -``allowpull`` - Whether to allow pulling from the repository. Default is True. -``allow_push`` - Whether to allow pushing to the repository. If empty or not set, - push is not allowed. If the special value ``*``, any remote user can - push, including unauthenticated users. Otherwise, the remote user - must have been authenticated, and the authenticated user name must - be present in this list. The contents of the allow_push list are - examined after the deny_push list. -``allow_read`` - If the user has not already been denied repository access due to - the contents of deny_read, this list determines whether to grant - repository access to the user. If this list is not empty, and the - user is unauthenticated or not present in the list, then access is - denied for the user. If the list is empty or not set, then access - is permitted to all users by default. Setting allow_read to the - special value ``*`` is equivalent to it not being set (i.e. access - is permitted to all users). The contents of the allow_read list are - examined after the deny_read list. -``allowzip`` - (DEPRECATED) Whether to allow .zip downloading of repository - revisions. Default is False. This feature creates temporary files. -``baseurl`` - Base URL to use when publishing URLs in other locations, so - third-party tools like email notification hooks can construct - URLs. Example: ``http://hgserver/repos/``. -``cacerts`` - Path to file containing a list of PEM encoded certificate - authority certificates. Environment variables and ``~user`` - constructs are expanded in the filename. If specified on the - client, then it will verify the identity of remote HTTPS servers - with these certificates. The form must be as follows:: - - -----BEGIN CERTIFICATE----- - ... (certificate in base64 PEM encoding) ... - -----END CERTIFICATE----- - -----BEGIN CERTIFICATE----- - ... (certificate in base64 PEM encoding) ... - -----END CERTIFICATE----- - - This feature is only supported when using Python 2.6 or later. If you wish - to use it with earlier versions of Python, install the backported - version of the ssl library that is available from - ``http://pypi.python.org``. - - You can use OpenSSL's CA certificate file if your platform has one. - On most Linux systems this will be ``/etc/ssl/certs/ca-certificates.crt``. - Otherwise you will have to generate this file manually. - - To disable SSL verification temporarily, specify ``--insecure`` from - command line. -``cache`` - Whether to support caching in hgweb. Defaults to True. -``contact`` - Name or email address of the person in charge of the repository. - Defaults to ui.username or ``$EMAIL`` or "unknown" if unset or empty. -``deny_push`` - Whether to deny pushing to the repository. If empty or not set, - push is not denied. If the special value ``*``, all remote users are - denied push. Otherwise, unauthenticated users are all denied, and - any authenticated user name present in this list is also denied. The - contents of the deny_push list are examined before the allow_push list. -``deny_read`` - Whether to deny reading/viewing of the repository. If this list is - not empty, unauthenticated users are all denied, and any - authenticated user name present in this list is also denied access to - the repository. If set to the special value ``*``, all remote users - are denied access (rarely needed ;). If deny_read is empty or not set, - the determination of repository access depends on the presence and - content of the allow_read list (see description). If both - deny_read and allow_read are empty or not set, then access is - permitted to all users by default. If the repository is being - served via hgwebdir, denied users will not be able to see it in - the list of repositories. The contents of the deny_read list have - priority over (are examined before) the contents of the allow_read - list. -``descend`` - hgwebdir indexes will not descend into subdirectories. Only repositories - directly in the current path will be shown (other repositories are still - available from the index corresponding to their containing path). -``description`` - Textual description of the repository's purpose or contents. - Default is "unknown". -``encoding`` - Character encoding name. Default is the current locale charset. - Example: "UTF-8" -``errorlog`` - Where to output the error log. Default is stderr. -``hidden`` - Whether to hide the repository in the hgwebdir index. - Default is False. -``ipv6`` - Whether to use IPv6. Default is False. -``logourl`` - Base URL to use for logos. If unset, ``http://mercurial.selenic.com/`` - will be used. -``name`` - Repository name to use in the web interface. Default is current - working directory. -``maxchanges`` - Maximum number of changes to list on the changelog. Default is 10. -``maxfiles`` - Maximum number of files to list per changeset. Default is 10. -``port`` - Port to listen on. Default is 8000. -``prefix`` - Prefix path to serve from. Default is '' (server root). -``push_ssl`` - Whether to require that inbound pushes be transported over SSL to - prevent password sniffing. Default is True. -``staticurl`` - Base URL to use for static files. If unset, static files (e.g. the - hgicon.png favicon) will be served by the CGI script itself. Use - this setting to serve them directly with the HTTP server. - Example: ``http://hgserver/static/``. -``stripes`` - How many lines a "zebra stripe" should span in multiline output. - Default is 1; set to 0 to disable. -``style`` - Which template map style to use. -``templates`` - Where to find the HTML templates. Default is install path. - +.. include:: ../mercurial/help/config.txt Author ------
--- a/mercurial/help/config.txt Mon May 30 10:05:39 2011 +0200 +++ b/mercurial/help/config.txt Mon May 30 10:21:39 2011 +0200 @@ -55,3 +55,1160 @@ - on Unix-like systems: ``man hgrc`` - online: http://www.selenic.com/mercurial/hgrc.5.html + +Files +----- + +Mercurial reads configuration data from several files, if they exist. +The names of these files depend on the system on which Mercurial is +installed. ``*.rc`` files from a single directory are read in +alphabetical order, later ones overriding earlier ones. Where multiple +paths are given below, settings from earlier paths override later +ones. + +| (Unix, Windows) ``<repo>/.hg/hgrc`` + + Per-repository configuration options that only apply in a + particular repository. This file is not version-controlled, and + will not get transferred during a "clone" operation. Options in + this file override options in all other configuration files. On + Unix, most of this file will be ignored if it doesn't belong to a + trusted user or to a trusted group. See the documentation for the + trusted_ section below for more details. + +| (Unix) ``$HOME/.hgrc`` +| (Windows) ``%USERPROFILE%\.hgrc`` +| (Windows) ``%USERPROFILE%\Mercurial.ini`` +| (Windows) ``%HOME%\.hgrc`` +| (Windows) ``%HOME%\Mercurial.ini`` + + Per-user configuration file(s), for the user running Mercurial. On + Windows 9x, ``%HOME%`` is replaced by ``%APPDATA%``. Options in these + files apply to all Mercurial commands executed by this user in any + directory. Options in these files override per-system and per-installation + options. + +| (Unix) ``/etc/mercurial/hgrc`` +| (Unix) ``/etc/mercurial/hgrc.d/*.rc`` + + Per-system configuration files, for the system on which Mercurial + is running. Options in these files apply to all Mercurial commands + executed by any user in any directory. Options in these files + override per-installation options. + +| (Unix) ``<install-root>/etc/mercurial/hgrc`` +| (Unix) ``<install-root>/etc/mercurial/hgrc.d/*.rc`` + + Per-installation configuration files, searched for in the + directory where Mercurial is installed. ``<install-root>`` is the + parent directory of the **hg** executable (or symlink) being run. For + example, if installed in ``/shared/tools/bin/hg``, Mercurial will look + in ``/shared/tools/etc/mercurial/hgrc``. Options in these files apply + to all Mercurial commands executed by any user in any directory. + +| (Windows) ``<install-dir>\Mercurial.ini`` +| (Windows) ``<install-dir>\hgrc.d\*.rc`` +| (Windows) ``HKEY_LOCAL_MACHINE\SOFTWARE\Mercurial`` + + Per-installation/system configuration files, for the system on + which Mercurial is running. Options in these files apply to all + Mercurial commands executed by any user in any directory. Registry + keys contain PATH-like strings, every part of which must reference + a ``Mercurial.ini`` file or be a directory where ``*.rc`` files will + be read. Mercurial checks each of these locations in the specified + order until one or more configuration files are detected. If the + pywin32 extensions are not installed, Mercurial will only look for + site-wide configuration in ``C:\Mercurial\Mercurial.ini``. + +Syntax +------ + +A configuration file consists of sections, led by a ``[section]`` header +and followed by ``name = value`` entries (sometimes called +``configuration keys``):: + + [spam] + eggs=ham + green= + eggs + +Each line contains one entry. If the lines that follow are indented, +they are treated as continuations of that entry. Leading whitespace is +removed 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 mercurial +will use the value that was configured last. As an example:: + + [spam] + eggs=large + ham=serrano + eggs=small + +This would set the configuration key named ``eggs`` to ``small``. + +It is also possible to define a section multiple times. A section can +be redefined on the same and/or on different hgrc files. For example:: + + [foo] + eggs=large + ham=serrano + eggs=small + + [bar] + eggs=ham + green= + eggs + + [foo] + ham=prosciutto + eggs=medium + bread=toasted + +This would set the ``eggs``, ``ham``, and ``bread`` configuration keys +of the ``foo`` section to ``medium``, ``prosciutto``, and ``toasted``, +respectively. As you can see there only thing that matters is the last +value that was set for each of the configuration keys. + +If a configuration key is set multiple times in different +configuration files the final value will depend on the order in which +the different configuration files are read, with settings from earlier +paths overriding later ones as described on the ``Files`` section +above. + +A line of the form ``%include file`` will include ``file`` into the +current configuration file. The inclusion is recursive, which means +that included files can include other files. Filenames are relative to +the configuration file in which the ``%include`` directive is found. +Environment variables and ``~user`` constructs are expanded in +``file``. 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 remove ``name`` from the current +section, 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 are +placed in double quotation marks:: + + allow_read = "John Doe, PhD", brian, betty + +Quotation marks can be escaped by prefixing them with a backslash. Only +quotation marks at the beginning of a word is counted as a quotation +(e.g., ``foo"bar baz`` is the list of ``foo"bar`` and ``baz``). + +Sections +-------- + +This section describes the different sections that may appear in a +Mercurial "hgrc" file, the purpose of each section, its possible keys, +and their possible values. + +``alias`` +""""""""" + +Defines command aliases. +Aliases allow you to define your own commands in terms of other +commands (or aliases), optionally including arguments. Positional +arguments in the form of ``$1``, ``$2``, etc in the alias definition +are expanded by Mercurial before execution. Positional arguments not +already used by ``$N`` in the definition are put at the end of the +command 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 command ``latest`` that shows only the five most recent +changesets. You can define subsequent aliases using earlier ones:: + + stable5 = latest -b stable + +.. note:: It is possible to create aliases with the same names as + existing commands, which will then override the original + definitions. This is almost always a bad idea! + +An alias can start with an exclamation point (``!``) to make it a +shell alias. A shell alias is executed with the shell and will let you +run arbitrary commands. As an example, :: + + echo = !echo + +will let you do ``hg echo foo`` to have ``foo`` printed in your +terminal. A better example might be:: + + purge = !$HG status --no-status --unknown -0 | xargs -0 rm + +which will make ``hg purge`` delete all unknown files in the +repository in the same manner as the purge extension. + +Shell aliases are executed in an environment where ``$HG`` expand to +the path of the Mercurial that was used to execute the alias. This is +useful when you want to call further Mercurial commands in a shell +alias, as was done above for the purge alias. In addition, +``$HG_ARGS`` expand to the arguments given to Mercurial. In the ``hg +echo foo`` call above, ``$HG_ARGS`` would expand to ``echo foo``. + +``auth`` +"""""""" + +Authentication credentials for HTTP authentication. This section +allows you to store usernames and passwords for use when logging +*into* HTTP servers. See the web_ configuration section if you want to +configure *who* can login to your HTTP server. + +Each line has the following format:: + + <name>.<argument> = <value> + +where ``<name>`` is used to group arguments into authentication +entries. Example:: + + foo.prefix = hg.intevation.org/mercurial + foo.username = foo + foo.password = bar + foo.schemes = http https + + bar.prefix = secure.example.org + bar.key = path/to/file.key + bar.cert = path/to/file.cert + bar.schemes = https + +Supported arguments: + +``prefix`` + Either ``*`` or a URI prefix with or without the scheme part. + The authentication entry with the longest matching prefix is used + (where ``*`` matches everything and counts as a match of length + 1). If the prefix doesn't include a scheme, the match is performed + against the URI with its scheme stripped as well, and the schemes + argument, q.v., is then subsequently consulted. +``username`` + Optional. Username to authenticate with. If not given, and the + remote site requires basic or digest authentication, the user will + be prompted for it. Environment variables are expanded in the + username letting you do ``foo.username = $USER``. +``password`` + Optional. Password to authenticate with. If not given, and the + remote site requires basic or digest authentication, the user + will be prompted for it. +``key`` + Optional. PEM encoded client certificate key file. Environment + variables are expanded in the filename. +``cert`` + Optional. PEM encoded client certificate chain file. Environment + variables are expanded in the filename. +``schemes`` + Optional. Space separated list of URI schemes to use this + authentication entry with. Only used if the prefix doesn't include + a scheme. Supported schemes are http and https. They will match + static-http and static-https respectively, as well. + Default: https. + +If no suitable authentication entry is found, the user is prompted +for credentials as usual if required by the remote. + + +``decode/encode`` +""""""""""""""""" + +Filters for transforming files on checkout/checkin. This would +typically be used for newline processing or other +localization/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 root +directory only, use the pattern ``*.txt``. To match any file ending +in ``.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, either ``pipe:`` or +``tempfile:``. If no specifier is given, ``pipe:`` is used by default. + +A ``pipe:`` command must accept data on stdin and return the transformed +data 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 + +A ``tempfile:`` command is a template. The string ``INFILE`` is replaced +with the name of a temporary file that contains the data to be +filtered by the command. The string ``OUTFILE`` is replaced with the name +of an empty temporary file, where the filtered data must be written by +the command. + +.. note:: The tempfile mechanism is recommended for Windows systems, + where the standard shell I/O redirection operators often have + strange effects and may corrupt the contents of your files. + +This filter mechanism is used internally by the ``eol`` extension to +translate line ending characters between Windows (CRLF) and Unix (LF) +format. We suggest you use the ``eol`` extension for convenience. + + +``defaults`` +"""""""""""" + +(defaults are deprecated. Don't use them. Use aliases instead) + +Use the ``[defaults]`` section to define command defaults, i.e. the +default options/arguments to pass to the specified commands. + +The following example makes :hg:`log` run in verbose mode, and +:hg:`status` show only the modified files, by default:: + + [defaults] + log = -v + status = -m + +The actual commands, instead of their aliases, must be used when +defining command defaults. The command defaults will also be applied +to the aliases of the commands defined. + + +``diff`` +"""""""" + +Settings used when displaying diffs. Everything except for ``unified`` is a +Boolean and defaults to False. + +``git`` + Use git extended diff format. +``nodates`` + Don't include dates in diff headers. +``showfunc`` + Show which function each change is in. +``ignorews`` + Ignore white space when comparing lines. +``ignorewsamount`` + Ignore changes in the amount of white space. +``ignoreblanklines`` + Ignore changes whose lines are all blank. +``unified`` + Number of lines of context to show. + +``email`` +""""""""" + +Settings for extensions that send email messages. + +``from`` + Optional. Email address to use in "From" header and SMTP envelope + of outgoing messages. +``to`` + Optional. Comma-separated list of recipients' email addresses. +``cc`` + Optional. Comma-separated list of carbon copy recipients' + email addresses. +``bcc`` + Optional. Comma-separated list of blind carbon copy recipients' + email addresses. +``method`` + Optional. Method to use to send email messages. If value is ``smtp`` + (default), use SMTP (see the SMTP_ section for configuration). + Otherwise, use as name of program to run that acts like sendmail + (takes ``-f`` option for sender, list of recipients on command line, + message on stdin). Normally, setting this to ``sendmail`` or + ``/usr/sbin/sendmail`` is enough to use sendmail to send messages. +``charsets`` + Optional. Comma-separated list of character sets considered + convenient for recipients. Addresses, headers, and parts not + containing patches of outgoing messages will be encoded in the + first character set to which conversion from local encoding + (``$HGENCODING``, ``ui.fallbackencoding``) succeeds. If correct + conversion fails, the text in question is sent as is. Defaults to + empty (explicit) list. + + Order of outgoing email character sets: + + 1. ``us-ascii``: always first, regardless of settings + 2. ``email.charsets``: in order given by user + 3. ``ui.fallbackencoding``: if not in email.charsets + 4. ``$HGENCODING``: if not in email.charsets + 5. ``utf-8``: always last, regardless of settings + +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 last + charsets = iso-8859-1, iso-8859-15, windows-1252 + + +``extensions`` +"""""""""""""" + +Mercurial has an extension mechanism for adding new features. To +enable 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 nothing +after the ``=``. + +Otherwise, give a name that you choose, followed by ``=``, followed by +the path to the ``.py`` file (including the file name extension) that +defines the extension. + +To explicitly disable an extension that is enabled in an hgrc of +broader scope, prepend its path with ``!``, as in ``foo = !/ext/path`` +or ``foo = !`` when path is not supplied. + +Example for ``~/.hgrc``:: + + [extensions] + # (the mq extension will get loaded from Mercurial's path) + mq = + # (this extension will get loaded from the file specified) + myfeature = ~/.hgext/myfeature.py + + +``hostfingerprints`` +"""""""""""""""""""" + +Fingerprints of the certificates of known HTTPS servers. +A HTTPS connection to a server with a fingerprint configured here will +only 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. +The CA chain and web.cacerts is not used for servers with a fingerprint. + +For example:: + + [hostfingerprints] + hg.intevation.org = 38:76:52:7c:87:26:9a:8f:4a:f8:d3:de:08:45:3b:ea:d6:4b:ee:cc + +This feature is only supported when using Python 2.6 or later. + + +``format`` +"""""""""" + +``usestore`` + Enable or disable the "store" repository format which improves + compatibility with systems that fold case or otherwise mangle + filenames. Enabled by default. Disabling this option will allow + you to store longer filenames in some situations at the expense of + compatibility and ensures that the on-disk format of newly created + repositories will be compatible with Mercurial before version 0.9.4. + +``usefncache`` + Enable or disable the "fncache" repository format which enhances + the "store" repository format (which has to be enabled to use + fncache) to allow longer filenames and avoids using Windows + reserved names, e.g. "nul". Enabled by default. Disabling this + option ensures that the on-disk format of newly created + repositories will be compatible with Mercurial before version 1.1. + +``dotencode`` + Enable or disable the "dotencode" repository format which enhances + the "fncache" repository format (which has to be enabled to use + dotencode) to avoid issues with filenames starting with ._ on + Mac OS X and spaces on Windows. Enabled by default. Disabling this + option ensures that the on-disk format of newly created + repositories will be compatible with Mercurial before version 1.7. + +``merge-patterns`` +"""""""""""""""""" + +This section specifies merge tools to associate with particular file +patterns. Tools matched here will take precedence over the default +merge tool. Patterns are globs by default, rooted at the repository +root. + +Example:: + + [merge-patterns] + **.c = kdiff3 + **.jpg = myimgmerge + +``merge-tools`` +""""""""""""""" + +This section configures external merge tools to use for file-level +merges. + +Example ``~/.hgrc``:: + + [merge-tools] + # Override stock tool location + kdiff3.executable = ~/bin/kdiff3 + # Specify command line + kdiff3.args = $base $local $other -o $output + # Give higher priority + kdiff3.priority = 1 + + # Define new tool + myHtmlTool.args = -m $local $other $base $output + myHtmlTool.regkey = Software\FooSoftware\HtmlMerge + myHtmlTool.priority = 1 + +Supported arguments: + +``priority`` + The priority in which to evaluate this tool. + Default: 0. +``executable`` + Either just the name of the executable or its pathname. On Windows, + the path can use environment variables with ${ProgramFiles} syntax. + Default: the tool name. +``args`` + The arguments to pass to the tool executable. You can refer to the + files being merged as well as the output file through these + variables: ``$base``, ``$local``, ``$other``, ``$output``. + Default: ``$local $base $other`` +``premerge`` + Attempt to run internal non-interactive 3-way merge tool before + launching external tool. Options are ``true``, ``false``, or ``keep`` + to leave markers in the file if the premerge fails. + Default: True +``binary`` + This tool can merge binary files. Defaults to False, unless tool + was selected by file pattern match. +``symlink`` + This tool can merge symlinks. Defaults to False, even if tool was + selected by file pattern match. +``check`` + A list of merge success-checking options: + + ``changed`` + Ask whether merge was successful when the merged file shows no changes. + ``conflicts`` + Check whether there are conflicts even though the tool reported success. + ``prompt`` + Always prompt for merge success, regardless of success reported by tool. + +``checkchanged`` + True is equivalent to ``check = changed``. + Default: False +``checkconflicts`` + True is equivalent to ``check = conflicts``. + Default: False +``fixeol`` + Attempt to fix up EOL changes caused by the merge tool. + Default: False +``gui`` + This tool requires a graphical interface to run. Default: False +``regkey`` + Windows registry key which describes install location of this + tool. Mercurial will search for this key first under + ``HKEY_CURRENT_USER`` and then under ``HKEY_LOCAL_MACHINE``. + Default: None +``regkeyalt`` + An alternate Windows registry key to try if the first key is not + found. The alternate key uses the same ``regname`` and ``regappend`` + semantics of the primary key. The most common use for this key + is to search for 32bit applications on 64bit operating systems. + Default: None +``regname`` + Name of value to read from specified registry key. Defaults to the + unnamed (default) value. +``regappend`` + String to append to the value read from the registry, typically + the executable name of the tool. + Default: None + + +``hooks`` +""""""""" + +Commands or Python functions that get automatically executed by +various actions such as starting or finishing a commit. Multiple +hooks can be run for the same action by appending a suffix to the +action. Overriding a site-wide hook can be done by changing its +value or setting it to an empty string. + +Example ``.hg/hgrc``:: + + [hooks] + # update working directory after adding changesets + changegroup.update = hg update + # do not use the site-wide hook + incoming = + incoming.email = /my/email/hook + incoming.autobuild = /my/build/hook + +Most hooks are run with environment variables set that give useful +additional information. For each hook below, the environment +variables it is passed are listed with names of the form ``$HG_foo``. + +``changegroup`` + Run after a changegroup has been added via push, pull or unbundle. + ID of the first new changeset is in ``$HG_NODE``. URL from which + changes came is in ``$HG_URL``. +``commit`` + Run after a changeset has been created in the local repository. ID + of the newly created changeset is in ``$HG_NODE``. Parent changeset + IDs are in ``$HG_PARENT1`` and ``$HG_PARENT2``. +``incoming`` + Run after a changeset has been pulled, pushed, or unbundled into + the local repository. The ID of the newly arrived changeset is in + ``$HG_NODE``. URL that was source of changes came is in ``$HG_URL``. +``outgoing`` + Run after sending changes from local repository to another. ID of + first changeset sent is in ``$HG_NODE``. Source of operation is in + ``$HG_SOURCE``; see "preoutgoing" hook for description. +``post-<command>`` + Run after successful invocations of the associated command. The + contents of the command line are passed as ``$HG_ARGS`` and the result + code in ``$HG_RESULT``. Parsed command line arguments are passed as + ``$HG_PATS`` and ``$HG_OPTS``. These contain string representations of + the python data internally passed to <command>. ``$HG_OPTS`` is a + dictionary of options (with unspecified options set to their defaults). + ``$HG_PATS`` is a list of arguments. Hook failure is ignored. +``pre-<command>`` + Run before executing the associated command. The contents of the + command line are passed as ``$HG_ARGS``. Parsed command line arguments + are passed as ``$HG_PATS`` and ``$HG_OPTS``. These contain string + representations of the data internally passed to <command>. ``$HG_OPTS`` + is a dictionary of options (with unspecified options set to their + defaults). ``$HG_PATS`` is a list of arguments. If the hook returns + failure, the command doesn't execute and Mercurial returns the failure + code. +``prechangegroup`` + Run before a changegroup is added via push, pull or unbundle. Exit + status 0 allows the changegroup to proceed. Non-zero status will + cause the push, pull or unbundle to fail. URL from which changes + will come is in ``$HG_URL``. +``precommit`` + Run before starting a local commit. Exit status 0 allows the + commit to proceed. Non-zero status will cause the commit to fail. + Parent changeset IDs are in ``$HG_PARENT1`` and ``$HG_PARENT2``. +``prelistkeys`` + Run before listing pushkeys (like bookmarks) in the + repository. Non-zero status will cause failure. The key namespace is + in ``$HG_NAMESPACE``. +``preoutgoing`` + Run before collecting changes to send from the local repository to + another. Non-zero status will cause failure. This lets you prevent + pull over HTTP or SSH. Also prevents against local pull, push + (outbound) or bundle commands, but not effective, since you can + just copy files instead then. Source of operation is in + ``$HG_SOURCE``. If "serve", operation is happening on behalf of remote + SSH or HTTP repository. If "push", "pull" or "bundle", operation + is happening on behalf of repository on same system. +``prepushkey`` + Run before a pushkey (like a bookmark) is added to the + repository. Non-zero status will cause the key to be rejected. The + key namespace is in ``$HG_NAMESPACE``, the key is in ``$HG_KEY``, + the old value (if any) is in ``$HG_OLD``, and the new value is in + ``$HG_NEW``. +``pretag`` + Run before creating a tag. Exit status 0 allows the tag to be + created. Non-zero status will cause the tag to fail. ID of + changeset to tag is in ``$HG_NODE``. Name of tag is in ``$HG_TAG``. Tag is + local if ``$HG_LOCAL=1``, in repository if ``$HG_LOCAL=0``. +``pretxnchangegroup`` + Run after a changegroup has been added via push, pull or unbundle, + but before the transaction has been committed. Changegroup is + visible to hook program. This lets you validate incoming changes + before accepting them. Passed the ID of the first new changeset in + ``$HG_NODE``. Exit status 0 allows the transaction to commit. Non-zero + status will cause the transaction to be rolled back and the push, + pull or unbundle will fail. URL that was source of changes is in + ``$HG_URL``. +``pretxncommit`` + Run after a changeset has been created but the transaction not yet + committed. Changeset is visible to hook program. This lets you + validate commit message and changes. Exit status 0 allows the + commit to proceed. Non-zero status will cause the transaction to + be rolled back. ID of changeset is in ``$HG_NODE``. Parent changeset + IDs are in ``$HG_PARENT1`` and ``$HG_PARENT2``. +``preupdate`` + Run before updating the working directory. Exit status 0 allows + the update to proceed. Non-zero status will prevent the update. + Changeset ID of first new parent is in ``$HG_PARENT1``. If merge, ID + of second new parent is in ``$HG_PARENT2``. +``listkeys`` + Run after listing pushkeys (like bookmarks) in the repository. The + key namespace is in ``$HG_NAMESPACE``. ``$HG_VALUES`` is a + dictionary containing the keys and values. +``pushkey`` + Run after a pushkey (like a bookmark) is added to the + repository. The key namespace is in ``$HG_NAMESPACE``, the key is in + ``$HG_KEY``, the old value (if any) is in ``$HG_OLD``, and the new + value is in ``$HG_NEW``. +``tag`` + Run after a tag is created. ID of tagged changeset is in ``$HG_NODE``. + Name of tag is in ``$HG_TAG``. Tag is local if ``$HG_LOCAL=1``, in + repository if ``$HG_LOCAL=0``. +``update`` + Run after updating the working directory. Changeset ID of first + new parent is in ``$HG_PARENT1``. If merge, ID of second new parent is + in ``$HG_PARENT2``. If the update succeeded, ``$HG_ERROR=0``. If the + update failed (e.g. because conflicts not resolved), ``$HG_ERROR=1``. + +.. note:: It is generally better to use standard hooks rather than the + generic pre- and post- command hooks as they are guaranteed to be + called in the appropriate contexts for influencing transactions. + Also, hooks like "commit" will be called in all contexts that + generate a commit (e.g. tag) and not just the commit command. + +.. note:: Environment variables with empty values may not be passed to + hooks on platforms such as Windows. As an example, ``$HG_PARENT2`` + will have an empty value under Unix-like platforms for non-merge + changesets, while it will not be available at all under Windows. + +The syntax for Python hooks is as follows:: + + hookname = python:modulename.submodule.callable + hookname = python:/path/to/python/module.py:callable + +Python hooks are run within the Mercurial process. Each hook is +called with at least three keyword arguments: a ui object (keyword +``ui``), a repository object (keyword ``repo``), and a ``hooktype`` +keyword that tells what kind of hook is used. Arguments listed as +environment variables above are passed as keyword arguments, with no +``HG_`` prefix, and names in lower case. + +If a Python hook returns a "true" value or raises an exception, this +is treated as a failure. + + +``http_proxy`` +"""""""""""""" + +Used to access web-based Mercurial repositories through a HTTP +proxy. + +``host`` + Host name and (optional) port of the proxy server, for example + "myproxy:8000". +``no`` + Optional. Comma-separated list of host names that should bypass + the proxy. +``passwd`` + Optional. Password to authenticate with at the proxy server. +``user`` + Optional. User name to authenticate with at the proxy server. +``always`` + Optional. Always use the proxy, even for localhost and any entries + in ``http_proxy.no``. True or False. Default: False. + +``smtp`` +"""""""" + +Configuration for extensions that need to send email messages. + +``host`` + Host name of mail server, e.g. "mail.example.com". +``port`` + Optional. Port to connect to on mail server. Default: 25. +``tls`` + Optional. Method to enable TLS when connecting to mail server: starttls, + smtps or none. Default: none. +``username`` + Optional. User name for authenticating with the SMTP server. + Default: none. +``password`` + Optional. Password for authenticating with the SMTP server. If not + specified, interactive sessions will prompt the user for a + password; non-interactive sessions will fail. Default: none. +``local_hostname`` + Optional. It's the hostname that the sender can use to identify + itself to the MTA. + + +``patch`` +""""""""" + +Settings used when applying patches, for instance through the 'import' +command or with Mercurial Queues extension. + +``eol`` + When set to 'strict' patch content and patched files end of lines + are preserved. When set to ``lf`` or ``crlf``, both files end of + lines are ignored when patching and the result line endings are + normalized to either LF (Unix) or CRLF (Windows). When set to + ``auto``, end of lines are again ignored while patching but line + endings in patched files are normalized to their original setting + on a per-file basis. If target file does not exist or has no end + of line, patch line endings are preserved. + Default: strict. + + +``paths`` +""""""""" + +Assigns symbolic names to repositories. The left side is the +symbolic name, and the right gives the directory or URL that is the +location of the repository. Default paths can be declared by setting +the following entries. + +``default`` + Directory or URL to use when pulling if no source is specified. + Default is set to repository from which the current repository was + cloned. +``default-push`` + Optional. Directory or URL to use when pushing if no destination + is specified. + + +``profiling`` +""""""""""""" + +Specifies profiling format and file output. In this section +description, 'profiling data' stands for the raw data collected +during profiling, while 'profiling report' stands for a statistical +text report generated from the profiling data. The profiling is done +using lsprof. + +``format`` + Profiling format. + Default: text. + + ``text`` + Generate a profiling report. When saving to a file, it should be + noted that only the report is saved, and the profiling data is + not kept. + ``kcachegrind`` + Format profiling data for kcachegrind use: when saving to a + file, the generated file can directly be loaded into + kcachegrind. +``output`` + File path where profiling data or report should be saved. If the + file exists, it is replaced. Default: None, data is printed on + stderr + +``server`` +"""""""""" + +Controls generic server settings. + +``uncompressed`` + Whether to allow clients to clone a repository using the + uncompressed streaming protocol. This transfers about 40% more + data than a regular clone, but uses less memory and CPU on both + server and client. Over a LAN (100 Mbps or better) or a very fast + WAN, an uncompressed streaming clone is a lot faster (~10x) than a + regular clone. Over most WAN connections (anything slower than + about 6 Mbps), uncompressed streaming is slower, because of the + extra data transfer overhead. This mode will also temporarily hold + the write lock while determining what data to transfer. + Default is True. + +``validate`` + Whether to validate the completeness of pushed changesets by + checking that all new file revisions specified in manifests are + present. Default is False. + +``subpaths`` +"""""""""""" + +Defines subrepositories source locations rewriting rules of the form:: + + <pattern> = <replacement> + +Where ``pattern`` is a regular expression matching the source and +``replacement`` is the replacement string used to rewrite it. Groups +can be matched in ``pattern`` and referenced in ``replacements``. For +instance:: + + http://server/(.*)-hg/ = http://hg.server/\1/ + +rewrites ``http://server/foo-hg/`` into ``http://hg.server/foo/``. + +All patterns are applied in definition order. + +``trusted`` +""""""""""" + +Mercurial will not use the settings in the +``.hg/hgrc`` file from a repository if it doesn't belong to a trusted +user or to a trusted group, as various hgrc features allow arbitrary +commands to be run. This issue is often encountered when configuring +hooks 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. The +current user is always trusted. To trust everybody, list a user or a +group with name ``*``. These settings must be placed in an +*already-trusted file* to take effect, such as ``$HOME/.hgrc`` of the +user or service running Mercurial. + +``users`` + Comma-separated list of trusted users. +``groups`` + Comma-separated list of trusted groups. + + +``ui`` +"""""" + +User interface controls. + +``archivemeta`` + Whether to include the .hg_archival.txt file containing meta data + (hashes for the repository base and for tip) in archives created + by the :hg:`archive` command or downloaded via hgweb. + Default is True. +``askusername`` + Whether to prompt for a username when committing. If True, and + neither ``$HGUSER`` nor ``$EMAIL`` has been specified, then the user will + be prompted to enter a username. If no username is entered, the + default ``USER@HOST`` is used instead. + Default is False. +``commitsubrepos`` + Whether to commit modified subrepositories when committing the + parent repository. If False and one subrepository has uncommitted + changes, abort the commit. + Default is True. +``debug`` + Print debugging information. True or False. Default is False. +``editor`` + The editor to use during a commit. Default is ``$EDITOR`` or ``vi``. +``fallbackencoding`` + Encoding to try if it's not possible to decode the changelog using + UTF-8. Default is ISO-8859-1. +``ignore`` + A file to read per-user ignore patterns from. This file should be + in the same format as a repository-wide .hgignore file. This + option supports hook syntax, so if you want to specify multiple + ignore files, you can do so by setting something like + ``ignore.other = ~/.hgignore2``. For details of the ignore file + format, see the |hgignore(5)|_ man page. +``interactive`` + Allow to prompt the user. True or False. Default is True. +``logtemplate`` + Template string for commands that print changesets. +``merge`` + The conflict resolution program to use during a manual merge. + For more information on merge tools see :hg:`help merge-tools`. + For configuring merge tools see the merge-tools_ section. +``portablefilenames`` + Check for portable filenames. Can be ``warn``, ``ignore`` or ``abort``. + Default is ``warn``. + If set to ``warn`` (or ``true``), a warning message is printed on POSIX + platforms, if a file with a non-portable filename is added (e.g. a file + with a name that can't be created on Windows because it contains reserved + parts like ``AUX``, reserved characters like ``:``, or would cause a case + collision with an existing file). + If set to ``ignore`` (or ``false``), no warning is printed. + If set to ``abort``, the command is aborted. + On Windows, this configuration option is ignored and the command aborted. +``quiet`` + Reduce the amount of output printed. True or False. Default is False. +``remotecmd`` + remote command to use for clone/push/pull operations. Default is ``hg``. +``report_untrusted`` + Warn if a ``.hg/hgrc`` file is ignored due to not being owned by a + trusted user or group. True or False. Default is True. +``slash`` + Display paths using a slash (``/``) as the path separator. This + only makes a difference on systems where the default path + separator is not the slash character (e.g. Windows uses the + backslash character (``\``)). + Default is False. +``ssh`` + command to use for SSH connections. Default is ``ssh``. +``strict`` + Require exact command names, instead of allowing unambiguous + abbreviations. True or False. Default is False. +``style`` + Name of style to use for command output. +``timeout`` + The timeout used when a lock is held (in seconds), a negative value + means no timeout. Default is 600. +``traceback`` + Mercurial always prints a traceback when an unknown exception + occurs. Setting this to True will make Mercurial print a traceback + on all exceptions, even those recognized by Mercurial (such as + IOError or MemoryError). Default is False. +``username`` + The committer of a changeset created when running "commit". + Typically a person's name and email address, e.g. ``Fred Widget + <fred@example.com>``. Default is ``$EMAIL`` or ``username@hostname``. If + the username in hgrc is empty, it has to be specified manually or + in a different hgrc file (e.g. ``$HOME/.hgrc``, if the admin set + ``username =`` in the system hgrc). Environment variables in the + username are expanded. +``verbose`` + Increase the amount of output printed. True or False. Default is False. + + +``web`` +""""""" + +Web interface configuration. The settings in this section apply to +both the builtin webserver (started by :hg:`serve`) and the script you +run through a webserver (``hgweb.cgi`` and the derivatives for FastCGI +and WSGI). + +The Mercurial webserver does no authentication (it does not prompt for +usernames and passwords to validate *who* users are), but it does do +authorization (it grants or denies access for *authenticated users* +based on settings in this section). You must either configure your +webserver to do authentication for you, or disable the authorization +checks. + +For a quick setup in a trusted environment, e.g., a private LAN, where +you want it to accept pushes from anybody, you can use the following +command line:: + + $ hg --config web.allow_push=* --config web.push_ssl=False serve + +Note that this will allow anybody to push anything to the server and +that this should not be used for public servers. + +The full set of options is: + +``accesslog`` + Where to output the access log. Default is stdout. +``address`` + Interface address to bind to. Default is all. +``allow_archive`` + List of archive format (bz2, gz, zip) allowed for downloading. + Default is empty. +``allowbz2`` + (DEPRECATED) Whether to allow .tar.bz2 downloading of repository + revisions. + Default is False. +``allowgz`` + (DEPRECATED) Whether to allow .tar.gz downloading of repository + revisions. + Default is False. +``allowpull`` + Whether to allow pulling from the repository. Default is True. +``allow_push`` + Whether to allow pushing to the repository. If empty or not set, + push is not allowed. If the special value ``*``, any remote user can + push, including unauthenticated users. Otherwise, the remote user + must have been authenticated, and the authenticated user name must + be present in this list. The contents of the allow_push list are + examined after the deny_push list. +``allow_read`` + If the user has not already been denied repository access due to + the contents of deny_read, this list determines whether to grant + repository access to the user. If this list is not empty, and the + user is unauthenticated or not present in the list, then access is + denied for the user. If the list is empty or not set, then access + is permitted to all users by default. Setting allow_read to the + special value ``*`` is equivalent to it not being set (i.e. access + is permitted to all users). The contents of the allow_read list are + examined after the deny_read list. +``allowzip`` + (DEPRECATED) Whether to allow .zip downloading of repository + revisions. Default is False. This feature creates temporary files. +``baseurl`` + Base URL to use when publishing URLs in other locations, so + third-party tools like email notification hooks can construct + URLs. Example: ``http://hgserver/repos/``. +``cacerts`` + Path to file containing a list of PEM encoded certificate + authority certificates. Environment variables and ``~user`` + constructs are expanded in the filename. If specified on the + client, then it will verify the identity of remote HTTPS servers + with these certificates. The form must be as follows:: + + -----BEGIN CERTIFICATE----- + ... (certificate in base64 PEM encoding) ... + -----END CERTIFICATE----- + -----BEGIN CERTIFICATE----- + ... (certificate in base64 PEM encoding) ... + -----END CERTIFICATE----- + + This feature is only supported when using Python 2.6 or later. If you wish + to use it with earlier versions of Python, install the backported + version of the ssl library that is available from + ``http://pypi.python.org``. + + You can use OpenSSL's CA certificate file if your platform has one. + On most Linux systems this will be ``/etc/ssl/certs/ca-certificates.crt``. + Otherwise you will have to generate this file manually. + + To disable SSL verification temporarily, specify ``--insecure`` from + command line. +``cache`` + Whether to support caching in hgweb. Defaults to True. +``contact`` + Name or email address of the person in charge of the repository. + Defaults to ui.username or ``$EMAIL`` or "unknown" if unset or empty. +``deny_push`` + Whether to deny pushing to the repository. If empty or not set, + push is not denied. If the special value ``*``, all remote users are + denied push. Otherwise, unauthenticated users are all denied, and + any authenticated user name present in this list is also denied. The + contents of the deny_push list are examined before the allow_push list. +``deny_read`` + Whether to deny reading/viewing of the repository. If this list is + not empty, unauthenticated users are all denied, and any + authenticated user name present in this list is also denied access to + the repository. If set to the special value ``*``, all remote users + are denied access (rarely needed ;). If deny_read is empty or not set, + the determination of repository access depends on the presence and + content of the allow_read list (see description). If both + deny_read and allow_read are empty or not set, then access is + permitted to all users by default. If the repository is being + served via hgwebdir, denied users will not be able to see it in + the list of repositories. The contents of the deny_read list have + priority over (are examined before) the contents of the allow_read + list. +``descend`` + hgwebdir indexes will not descend into subdirectories. Only repositories + directly in the current path will be shown (other repositories are still + available from the index corresponding to their containing path). +``description`` + Textual description of the repository's purpose or contents. + Default is "unknown". +``encoding`` + Character encoding name. Default is the current locale charset. + Example: "UTF-8" +``errorlog`` + Where to output the error log. Default is stderr. +``hidden`` + Whether to hide the repository in the hgwebdir index. + Default is False. +``ipv6`` + Whether to use IPv6. Default is False. +``logourl`` + Base URL to use for logos. If unset, ``http://mercurial.selenic.com/`` + will be used. +``name`` + Repository name to use in the web interface. Default is current + working directory. +``maxchanges`` + Maximum number of changes to list on the changelog. Default is 10. +``maxfiles`` + Maximum number of files to list per changeset. Default is 10. +``port`` + Port to listen on. Default is 8000. +``prefix`` + Prefix path to serve from. Default is '' (server root). +``push_ssl`` + Whether to require that inbound pushes be transported over SSL to + prevent password sniffing. Default is True. +``staticurl`` + Base URL to use for static files. If unset, static files (e.g. the + hgicon.png favicon) will be served by the CGI script itself. Use + this setting to serve them directly with the HTTP server. + Example: ``http://hgserver/static/``. +``stripes`` + How many lines a "zebra stripe" should span in multiline output. + Default is 1; set to 0 to disable. +``style`` + Which template map style to use. +``templates`` + Where to find the HTML templates. Default is install path.