% create cvs repository with one project
cvs -f -q -d *REPO* init
% populate cvs repository
cvs -f -Q co proj
cvs -f -Q add file1
cvs -f ci -madd file1 on trunk
% create two release branches
cvs -f -q tag -b v1_0
T file1
cvs -f -q tag -b v1_1
T file1
% modify file1 on branch v1_0
cvs -f -Q update -rv1_0
cvs -f ci -madd text
% make unrelated change on v1_1
cvs -f -Q update -rv1_1
cvs -f -Q add unrelated
cvs -f ci -munrelated change
% merge file1 to v1_1
cvs -f -Q update -jv1_0
RCS file: *REPO*/proj/file1,v
retrieving revision 1.1
retrieving revision 1.1.2.1
Merging differences between 1.1 and 1.1.2.1 into file1
cvs -f ci -madd text [MERGE from v1_0]
% merge change to trunk
cvs -f -Q update -A
cvs -f -Q update -jv1_1
RCS file: *REPO*/proj/file1,v
retrieving revision 1.1
retrieving revision 1.1.4.1
Merging differences between 1.1 and 1.1.4.1 into file1
cvs -f ci -madd text [MERGE from v1_1]
% non-merged change on trunk
cvs -f -Q add file2
cvs -f ci -madd file2 on trunk file2
% change on trunk to backport
cvs -f ci -madd other text file1
revision 1.3
add other text
----------------------------
revision 1.2
add text [MERGE from v1_1]
----------------------------
revision 1.1
branches:  1.1.2;  1.1.4;
add file1 on trunk
----------------------------
revision 1.1.4.1
add text [MERGE from v1_0]
----------------------------
revision 1.1.2.1
add text
=============================================================================
% backport trunk change to v1_1
cvs -f -Q update -rv1_1
cvs -f -Q update -j1.2 -j1.3 file1
RCS file: *REPO*/proj/file1,v
retrieving revision 1.2
retrieving revision 1.3
Merging differences between 1.2 and 1.3 into file1
cvs -f ci -madd other text [MERGE from HEAD] file1
% fix bug on v1_1, merge to trunk with error
cvs -f -Q update -rv1_1
cvs -f -Q tag unmerged
cvs -f ci -mfix file1
cvs -f -Q update -A
cvs -f -Q update -junmerged -jv1_1
RCS file: *REPO*/proj/file1,v
retrieving revision 1.1.4.2
retrieving revision 1.1.4.3
Merging differences between 1.1.4.2 and 1.1.4.3 into file1
cvs -f ci -mfix file1 [MERGE from v1-1]
% convert to hg
warning: CVS commit message references non-existent branch 'v1-1':
fix file1 [MERGE from v1-1]
initializing destination proj.hg repository
connecting to *REPO*
scanning source...
collecting CVS rlog
12 log entries
creating changesets
10 changeset entries
sorting...
converting...
9 add file1 on trunk
8 add text
7 unrelated change
6 add text [MERGE from v1_0]
5 add text [MERGE from v1_1]
4 add file2 on trunk
3 add other text
2 add other text [MERGE from HEAD]
1 fix file1
0 fix file1 [MERGE from v1-1]
% complete log
9: '' fix file1 [MERGE from v1-1]
8: 'v1_1' fix file1
7: 'v1_1' add other text [MERGE from HEAD]
6: '' add other text
5: '' add file2 on trunk
4: '' add text [MERGE from v1_1]
3: 'v1_1' add text [MERGE from v1_0]
2: 'v1_1' unrelated change
1: 'v1_0' add text
0: '' add file1 on trunk
% graphical log
o  9: '' fix file1 [MERGE from v1-1]
|
| o  8: 'v1_1' fix file1
| |
| o  7: 'v1_1' add other text [MERGE from HEAD]
|/|
o |  6: '' add other text
| |
o |  5: '' add file2 on trunk
| |
o |  4: '' add text [MERGE from v1_1]
|\|
| o    3: 'v1_1' add text [MERGE from v1_0]
| |\
+---o  2: 'v1_1' unrelated change
| |
| o  1: 'v1_0' add text
|/
o  0: '' add file1 on trunk

