# HG changeset patch # User Martin Geisler # Date 1304931128 -7200 # Node ID 7f16ff9e45b4a6114fb157effcce1322ab1681e0 # Parent 01472f8f542935bde09c64f53fd6cb9cc392539d# Parent 2a6ee654655e5eb2f42665d968835c3bc5743037 merge with stable diff -r 01472f8f5429 -r 7f16ff9e45b4 doc/hgrc.5.txt --- a/doc/hgrc.5.txt Sun May 08 16:41:41 2011 -0500 +++ b/doc/hgrc.5.txt Mon May 09 10:52:08 2011 +0200 @@ -200,6 +200,26 @@ 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`` """"""""