% 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

