Mercurial > hg
view tests/test-convert-cvsnt-mergepoints.out @ 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 | c66e324d3961 |
children |
line wrap: on
line source
% create cvs repository cvs -f -Q -d *REPO* init % checkout #1: add foo.txt cvs -f -Q checkout -d cvsworktmp . cvs -f -Q add foo cvs -f -Q add foo.txt cvs -f ci -f -m add foo.txt foo.txt initial revision: 1.1 % checkout #2: create MYBRANCH1 and modify foo.txt on it cvs -f -Q checkout -d cvswork foo cvs -f -q rtag -b -R MYBRANCH1 foo cvs -f -Q update -P -r MYBRANCH1 cvs -f ci -f -m bar foo.txt new revision: 1.1.2.1; previous revision: 1.1 cvs -f ci -f -m baz foo.txt new revision: 1.1.2.2; previous revision: 1.1.2.1 % create MYBRANCH1_2 and modify foo.txt some more cvs -f -q rtag -b -R -r MYBRANCH1 MYBRANCH1_2 foo cvs -f -Q update -P -r MYBRANCH1_2 cvs -f ci -f -m bazzie foo.txt new revision: 1.1.2.2.2.1; previous revision: 1.1.2.2 % create MYBRANCH1_1 and modify foo.txt yet again cvs -f -q rtag -b -R MYBRANCH1_1 foo cvs -f -Q update -P -r MYBRANCH1_1 cvs -f ci -f -m quux foo.txt new revision: 1.1.4.1; previous revision: 1.1 % merge MYBRANCH1 to MYBRANCH1_1 rcsmerge: warning: conflicts during merge cvs -f -Q update -P -jMYBRANCH1 RCS file: *REPO*/foo/foo.txt,v retrieving revision 1.1 retrieving revision 1.1.2.2 Merging differences between 1.1 and 1.1.2.2 into foo.txt cvs -f ci -f -m merge1+clobber foo.txt new revision: 1.1.4.2; previous revision: 1.1.4.1 % return to trunk and merge MYBRANCH1_2 cvs -f -Q update -P -A cvs -f -Q update -P -jMYBRANCH1_2 RCS file: *REPO*/foo/foo.txt,v retrieving revision 1.1 retrieving revision 1.1.2.2.2.1 Merging differences between 1.1 and 1.1.2.2.2.1 into foo.txt cvs -f ci -f -m merge2 foo.txt new revision: 1.2; previous revision: 1.1 collecting CVS rlog 7 log entries creating changesets 7 changeset entries --------------------- PatchSet 1 Date: Author: Branch: HEAD Tag: (none) Branchpoints: MYBRANCH1_1, MYBRANCH1 Log: foo.txt Members: foo.txt:INITIAL->1.1 --------------------- PatchSet 2 Date: Author: Branch: MYBRANCH1 Tag: (none) Parent: 1 Log: bar Members: foo.txt:1.1->1.1.2.1 --------------------- PatchSet 3 Date: Author: Branch: MYBRANCH1 Tag: (none) Branchpoints: MYBRANCH1_2 Parent: 2 Log: baz Members: foo.txt:1.1.2.1->1.1.2.2 --------------------- PatchSet 4 Date: Author: Branch: MYBRANCH1_1 Tag: (none) Parent: 1 Log: quux Members: foo.txt:1.1->1.1.4.1 --------------------- PatchSet 5 Date: Author: Branch: MYBRANCH1_2 Tag: (none) Parent: 3 Log: bazzie Members: foo.txt:1.1.2.2->1.1.2.2.2.1 --------------------- PatchSet 6 Date: Author: Branch: HEAD Tag: (none) Parents: 1,5 Log: merge Members: foo.txt:1.1->1.2 --------------------- PatchSet 7 Date: Author: Branch: MYBRANCH1_1 Tag: (none) Parents: 4,3 Log: merge Members: foo.txt:1.1.4.1->1.1.4.2