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