Mercurial > hg
view mercurial/help/hgweb.txt @ 11989:f853873fc66d
aliases: provide more flexible ways to work with shell alias arguments
This patch changes the functionality of shell aliases to add more powerful
options for working with shell alias arguments.
First: the alias name + arguments to a shell alias are set as an HG_ARGS
environment variable, delimited by spaces. This matches the behavior of hooks.
Second: any occurrences of "$@" (without quotes) are replaced with the
arguments, separated by spaces. This happens *before* the alias gets to the shell.
Third: any positive numeric variables ("$1", "$2", etc) are replaced with the
appropriate argument, indexed from 1. "$0" is replaced with the name of the
alias. Any "extra" numeric variables are replaced with an empty string. This
happens *before* the alias gets to the shell.
These changes allow for more flexible shell aliases:
[alias]
echo = !echo $@
count = !hg log -r "$@" --template='.' | wc -c | sed -e 's/ //g'
qqueuemv = !mv "`hg root`/.hg/patches-$1" "`hg root`/.hg/patches-$2"
In action:
$ hg echo foo
foo
$ hg count 'branch(default)'
901
$ hg count 'branch(stable) and keyword(fixes)'
102
$ hg qqueuemv myfeature somefeature
author | Steve Losh <steve@stevelosh.com> |
---|---|
date | Wed, 18 Aug 2010 18:56:44 -0400 |
parents | 38182ed043b7 |
children | c5709dfa5c1e |
line wrap: on
line source
Mercurial's internal web server, hgweb, can serve either a single repository, or a collection of them. In the latter case, a special configuration file can be used to specify the repository paths to use and global web configuration options. This file uses the same syntax as hgrc configuration files, but only the following sections are recognized: - web - paths - collections The ``web`` section can specify all the settings described in the web section of the hgrc documentation. The ``paths`` section provides mappings of physical repository paths to virtual ones. For instance:: [paths] projects/a = /foo/bar projects/b = /baz/quux web/root = /real/root/* / = /real/root2/* virtual/root2 = /real/root2/** - The first two entries make two repositories in different directories appear under the same directory in the web interface - The third entry maps every Mercurial repository found in '/real/root' into 'web/root'. This format is preferred over the [collections] one, since using absolute paths as configuration keys is not supported on every platform (especially on Windows). - The fourth entry is a special case mapping all repositories in '/real/root2' in the root of the virtual directory. - The fifth entry recursively finds all repositories under the real root, and maps their relative paths under the virtual root. The ``collections`` section provides mappings of trees of physical repositories paths to virtual ones, though the paths syntax is generally preferred. For instance:: [collections] /foo = /foo Here, the left side will be stripped off all repositories found in the right side. Thus ``/foo/bar`` and ``foo/quux/baz`` will be listed as ``bar`` and ``quux/baz`` respectively.