[PATCH] help: move part of hgrc.5.txt to help/config.txt (issue2804)

Matt Mackall mpm at selenic.com
Thu May 26 16:27:38 CDT 2011


On Thu, 2011-05-26 at 22:28 +0800, Yun Lee wrote:
> # HG changeset patch
> # User Yun Lee <yun.lee.bj at gmail.com>
> # Date 1306420082 -28800
> # Branch stable

This should probably be done on the default branch. While we generally
want doc fixes to go on the stable branch, this is significantly more
than a fix.

Also, this patch doesn't apply on the default branch because we've
touched this file a couple times there. As your patch doesn't flag this
as a copy (you'll need to do hg cp, then use the --git format), we'd
potentially miss those changes in a merge from stable to default rather
than getting them automatically merged.

> # Node ID e82e61c780b2f7c6ff321c6ff1d7636ad99e07a7
> # Parent  bd23d5f28bbb67c5c71c7109c00a0bc8a197b228
> help: move part of hgrc.5.txt to help/config.txt (issue2804)
> 
> diff -r bd23d5f28bbb -r e82e61c780b2 doc/hgrc.5.txt
> --- a/doc/hgrc.5.txt	Thu May 19 18:09:25 2011 +0200
> +++ b/doc/hgrc.5.txt	Thu May 26 22:28:02 2011 +0800
> @@ -15,1123 +15,7 @@
>     :backlinks: top
>     :class: htmlonly
>  
> -
> -Synopsis
> ---------
> -
> -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.
> -
> -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 at 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``.
> -``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.
> -``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``.
> -``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 at 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.
> -``patch``
> -    command to use to apply patches. Look for ``gpatch`` or ``patch`` in
> -    PATH if unset.
> -``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 at example.com>``. Default is ``$EMAIL`` or ``username at 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.
> -``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.
> -``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
>  ------
> diff -r bd23d5f28bbb -r e82e61c780b2 mercurial/help/config.txt
> --- a/mercurial/help/config.txt	Thu May 19 18:09:25 2011 +0200
> +++ b/mercurial/help/config.txt	Thu May 26 22:28:02 2011 +0800
> @@ -55,3 +55,1101 @@
>  
>  - on Unix-like systems: ``man hgrc``
>  - online: http://www.selenic.com/mercurial/hgrc.5.html
> +
> +Synopsis
> +--------
> +
> +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.
> +
> +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!
> +
> +
> +``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 at 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``.
> +``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.
> +``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``.
> +``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 at 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.
> +``patch``
> +    command to use to apply patches. Look for ``gpatch`` or ``patch`` in
> +    PATH if unset.
> +``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 at example.com>``. Default is ``$EMAIL`` or ``username at 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.
> +``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.
> +``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.
> +
> +
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at selenic.com
> http://selenic.com/mailman/listinfo/mercurial-devel


-- 
Mathematics is the supreme nostalgia of our time.




More information about the Mercurial-devel mailing list