view tests/test-convert-cvs-synthetic.out @ 11988:8380ed691df8

util: add an interpolate() function to for replacing multiple values util.interpolate can be used to replace multiple items in a string all at once (and optionally apply a function to the replacement), without worrying about recursing: >>> import util >>> s = '$foo, $spam' >>> util.interpolate(r'\$', { 'foo': 'bar', 'spam': 'eggs' }, s) 'bar, eggs' >>> util.interpolate(r'\$', { 'foo': 'spam', 'spam': 'foo' }, s) 'spam, foo' >>> util.interpolate(r'\$', { 'foo': 'spam', 'spam': 'foo' }, s, lambda s: s.upper()) 'SPAM, FOO' The patch also changes filemerge.py to use this new function.
author Steve Losh <steve@stevelosh.com>
date Wed, 18 Aug 2010 18:18:26 -0400
parents 56a5f80556f5
children
line wrap: on
line source

% create cvs repository with one project
cvs -f -d *REPO* init
cvs -f -q co proj
% create file1 on the trunk
cvs -f -Q add file1
cvs -f ci -madd file1 on trunk file1
% create two branches
cvs -f -q tag -b v1_0
T file1
cvs -f -q tag -b v1_1
T file1
% create file2 on branch v1_0
cvs -f -Q up -rv1_0
cvs -f -Q add file2
cvs -f ci -madd file2 file2
% create file3, file4 on branch v1_1
cvs -f -Q up -rv1_1
cvs -f -Q add file3 file4
cvs -f ci -madd file3, file4 on branch v1_1 file3 file4
% merge file2 from v1_0 to v1_1
cvs -f -Q up -jv1_0
cvs -f ci -mMERGE from v1_0: add file2
% create branch v1_2
cvs -f -Q up -A
cvs -f -q tag -b v1_2
T file1
% create file5 on branch v1_2
cvs -f -Q up -rv1_2
cvs -f ci -madd file5 on v1_2
% create file6 on trunk post-v1_2
cvs -f -Q up -A
cvs -f -Q add file6
cvs -f ci -madd file6 on trunk post-v1_2
% merge file5 from v1_2 to trunk
cvs -f -Q up -A
cvs -f -Q up -jv1_2 file5
cvs -f ci -mMERGE from v1_2: add file5
% merge file6 from trunk to v1_2
cvs -f -Q up -rv1_2
cvs -f up -jHEAD file6
U file6
cvs -f ci -mMERGE from HEAD: add file6
% cvs rlog output
RCS file: *REPO*/proj/file1,v
revision 1.1
RCS file: *REPO*/proj/Attic/file2,v
revision 1.1
revision 1.1.4.2
revision 1.1.4.1
revision 1.1.2.1
RCS file: *REPO*/proj/Attic/file3,v
revision 1.1
revision 1.1.2.1
RCS file: *REPO*/proj/Attic/file4,v
revision 1.1
revision 1.1.2.1
RCS file: *REPO*/proj/file5,v
revision 1.2
revision 1.1
revision 1.1.2.1
RCS file: *REPO*/proj/file6,v
revision 1.1
revision 1.1.2.2
revision 1.1.2.1
% convert to hg (#1)
initializing destination proj.hg repository
connecting to *REPO*
scanning source...
collecting CVS rlog
15 log entries
creating changesets
8 changeset entries
sorting...
converting...
7 add file1 on trunk
6 add file2
5 add file3, file4 on branch v1_1
4 MERGE from v1_0: add file2
3 add file5 on v1_2
2 add file6 on trunk post-v1_2
1 MERGE from v1_2: add file5
0 MERGE from HEAD: add file6
% hg glog output (#1)
o  7 MERGE from HEAD: add file6
|
| o  6 MERGE from v1_2: add file5
| |
| o  5 add file6 on trunk post-v1_2
| |
o |  4 add file5 on v1_2
|/
| o  3 MERGE from v1_0: add file2
| |
| o  2 add file3, file4 on branch v1_1
|/
| o  1 add file2
|/
o  0 add file1 on trunk

% convert to hg (#2: with merge detection)
initializing destination proj.hg2 repository
connecting to *REPO*
scanning source...
collecting CVS rlog
15 log entries
creating changesets
8 changeset entries
sorting...
converting...
7 add file1 on trunk
6 add file2
5 add file3, file4 on branch v1_1
4 MERGE from v1_0: add file2
3 add file5 on v1_2
2 add file6 on trunk post-v1_2
1 MERGE from v1_2: add file5
0 MERGE from HEAD: add file6
% hg glog output (#2)
o    7 MERGE from HEAD: add file6
|\
| o  6 MERGE from v1_2: add file5
| |
| o  5 add file6 on trunk post-v1_2
| |
o |  4 add file5 on v1_2
|/
| o    3 MERGE from v1_0: add file2
| |\
+---o  2 add file3, file4 on branch v1_1
| |
| o  1 add file2
|/
o  0 add file1 on trunk