--- a/tests/test-convert-cvs-detectmerge Sun Sep 26 15:33:09 2010 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,116 +0,0 @@
-#!/bin/sh
-
-# Test config convert.cvsps.mergefrom config setting.
-# (Should test similar mergeto feature, but I don't understand it yet.)
-# Requires builtin cvsps.
-
-"$TESTDIR/hghave" cvs || exit 80
-
-CVSROOT=`pwd`/cvsrepo
-export CVSROOT
-
-# XXX copied from test-convert-cvs-synthetic
-cvscall()
-{
- echo cvs -f "$@"
- cvs -f "$@"
-}
-
-# output of 'cvs ci' varies unpredictably, so just discard it
-# XXX copied from test-convert-cvs-synthetic
-cvsci()
-{
- echo cvs -f ci "$@"
- cvs -f ci "$@" >/dev/null 2>&1
-}
-
-# XXX copied from test-convert-cvs-synthetic
-filterpath()
-{
- eval "$@" | sed "s:$CVSROOT:*REPO*:g"
-}
-
-echo "[extensions]" >> $HGRCPATH
-echo "convert = " >> $HGRCPATH
-echo "graphlog = " >> $HGRCPATH
-echo "[convert]" >> $HGRCPATH
-echo "cvsps.cache=0" >> $HGRCPATH
-echo "cvsps.mergefrom=\[MERGE from (\S+)\]" >> $HGRCPATH
-
-echo % create cvs repository with one project
-mkdir cvsrepo
-
-filterpath cvscall -q -d "$CVSROOT" init
-mkdir cvsrepo/proj
-
-echo % populate cvs repository
-cvscall -Q co proj
-cd proj
-touch file1
-cvscall -Q add file1
-cvsci -m"add file1 on trunk"
-
-echo % create two release branches
-cvscall -q tag -b v1_0
-cvscall -q tag -b v1_1
-
-echo % modify file1 on branch v1_0
-filterpath cvscall -Q update -rv1_0
-echo "change" >> file1
-cvsci -m"add text"
-
-echo % make unrelated change on v1_1
-cvscall -Q update -rv1_1
-touch unrelated
-cvscall -Q add unrelated
-cvsci -m"unrelated change"
-
-echo % merge file1 to v1_1
-filterpath cvscall -Q update -jv1_0
-cvsci -m"add text [MERGE from v1_0]"
-
-echo % merge change to trunk
-cvscall -Q update -A
-filterpath cvscall -Q update -jv1_1
-cvsci -m"add text [MERGE from v1_1]"
-
-echo % non-merged change on trunk
-echo "foo" > file2
-cvscall -Q add file2
-cvsci -m"add file2 on trunk" file2
-
-# this will create rev 1.3
-echo % change on trunk to backport
-echo "backport me" >> file1
-cvsci -m"add other text" file1
-cvscall log file1 | sed -n '/^date: / d; /^revision /,$ p;'
-
-# XXX how many ways are there to spell "trunk" with CVS?
-echo % backport trunk change to v1_1
-cvscall -Q update -rv1_1
-filterpath cvscall -Q update -j1.2 -j1.3 file1
-cvsci -m"add other text [MERGE from HEAD]" file1
-
-set -e
-echo "% fix bug on v1_1, merge to trunk with error"
-cvscall -Q update -rv1_1
-echo "merge forward" >> file1
-cvscall -Q tag unmerged
-cvsci -m"fix file1"
-cvscall -Q update -A
-filterpath cvscall -Q update -junmerged -jv1_1
-# note the typo in the commit log message
-cvsci -m"fix file1 [MERGE from v1-1]"
-cvs -Q tag -d unmerged
-
-set -e
-echo % convert to hg
-cd ..
-filterpath hg convert proj proj.hg
-
-echo % complete log
-template="{rev}: '{branches}' {desc}\n"
-hg -R proj.hg log --template="$template"
-
-echo % graphical log
-hg -R proj.hg glog --template="$template"
--- a/tests/test-convert-cvs-detectmerge.out Sun Sep 26 15:33:09 2010 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,127 +0,0 @@
-% 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
-
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-convert-cvs-detectmerge.t Sun Sep 26 15:42:48 2010 -0500
@@ -0,0 +1,231 @@
+Test config convert.cvsps.mergefrom config setting.
+(Should test similar mergeto feature, but I don't understand it yet.)
+Requires builtin cvsps.
+
+ $ "$TESTDIR/hghave" cvs || exit 80
+ $ CVSROOT=`pwd`/cvsrepo
+ $ export CVSROOT
+
+ $ cvscall()
+ > {
+ > cvs -f "$@"
+ > }
+
+output of 'cvs ci' varies unpredictably, so just discard it
+XXX copied from test-convert-cvs-synthetic
+
+ $ cvsci()
+ > {
+ > cvs -f ci "$@" > /dev/null
+ > }
+
+XXX copied from test-convert-cvs-synthetic
+
+ $ echo "[extensions]" >> $HGRCPATH
+ $ echo "convert = " >> $HGRCPATH
+ $ echo "graphlog = " >> $HGRCPATH
+ $ echo "[convert]" >> $HGRCPATH
+ $ echo "cvsps.cache=0" >> $HGRCPATH
+ $ echo "cvsps.mergefrom=\[MERGE from (\S+)\]" >> $HGRCPATH
+
+create cvs repository with one project
+
+ $ mkdir cvsrepo
+ $ cvscall -q -d "$CVSROOT" init
+ $ mkdir cvsrepo/proj
+
+populate cvs repository
+
+ $ cvscall -Q co proj
+ $ cd proj
+ $ touch file1
+ $ cvscall -Q add file1
+ $ cvsci -m"add file1 on trunk"
+ cvs commit: Examining .
+
+create two release branches
+
+ $ cvscall -q tag -b v1_0
+ T file1
+ $ cvscall -q tag -b v1_1
+ T file1
+
+modify file1 on branch v1_0
+
+ $ cvscall -Q update -rv1_0
+ $ echo "change" >> file1
+ $ cvsci -m"add text"
+ cvs commit: Examining .
+
+make unrelated change on v1_1
+
+ $ cvscall -Q update -rv1_1
+ $ touch unrelated
+ $ cvscall -Q add unrelated
+ $ cvsci -m"unrelated change"
+ cvs commit: Examining .
+
+merge file1 to v1_1
+
+ $ cvscall -Q update -jv1_0
+ RCS file: */cvsrepo/proj/file1,v (glob)
+ retrieving revision 1.1
+ retrieving revision 1.1.2.1
+ Merging differences between 1.1 and 1.1.2.1 into file1
+ $ cvsci -m"add text [MERGE from v1_0]"
+ cvs commit: Examining .
+
+merge change to trunk
+
+ $ cvscall -Q update -A
+ $ cvscall -Q update -jv1_1
+ RCS file: */cvsrepo/proj/file1,v (glob)
+ retrieving revision 1.1
+ retrieving revision 1.1.4.1
+ Merging differences between 1.1 and 1.1.4.1 into file1
+ $ cvsci -m"add text [MERGE from v1_1]"
+ cvs commit: Examining .
+
+non-merged change on trunk
+
+ $ echo "foo" > file2
+ $ cvscall -Q add file2
+ $ cvsci -m"add file2 on trunk" file2
+
+this will create rev 1.3
+change on trunk to backport
+
+ $ echo "backport me" >> file1
+ $ cvsci -m"add other text" file1
+ $ cvscall log file1
+
+ RCS file: */cvsrepo/proj/file1,v (glob)
+ Working file: file1
+ head: 1.3
+ branch:
+ locks: strict
+ access list:
+ symbolic names:
+ v1_1: 1.1.0.4
+ v1_0: 1.1.0.2
+ keyword substitution: kv
+ total revisions: 5; selected revisions: 5
+ description:
+ ----------------------------
+ revision 1.3
+ date: * (glob)
+ add other text
+ ----------------------------
+ revision 1.2
+ date: * (glob)
+ add text [MERGE from v1_1]
+ ----------------------------
+ revision 1.1
+ date: * (glob)
+ branches: 1.1.2; 1.1.4;
+ add file1 on trunk
+ ----------------------------
+ revision 1.1.4.1
+ date: * (glob)
+ add text [MERGE from v1_0]
+ ----------------------------
+ revision 1.1.2.1
+ date: * (glob)
+ add text
+ =============================================================================
+
+XXX how many ways are there to spell "trunk" with CVS?
+backport trunk change to v1_1
+
+ $ cvscall -Q update -rv1_1
+ $ cvscall -Q update -j1.2 -j1.3 file1
+ RCS file: */cvsrepo/proj/file1,v (glob)
+ retrieving revision 1.2
+ retrieving revision 1.3
+ Merging differences between 1.2 and 1.3 into file1
+ $ cvsci -m"add other text [MERGE from HEAD]" file1
+
+fix bug on v1_1, merge to trunk with error
+
+ $ cvscall -Q update -rv1_1
+ $ echo "merge forward" >> file1
+ $ cvscall -Q tag unmerged
+ $ cvsci -m"fix file1"
+ cvs commit: Examining .
+ $ cvscall -Q update -A
+ $ cvscall -Q update -junmerged -jv1_1
+ RCS file: */cvsrepo/proj/file1,v (glob)
+ 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
+
+note the typo in the commit log message
+
+ $ cvsci -m"fix file1 [MERGE from v1-1]"
+ cvs commit: Examining .
+ $ cvs -Q tag -d unmerged
+
+convert to hg
+
+ $ cd ..
+ $ hg convert proj proj.hg
+ initializing destination proj.hg repository
+ connecting to */cvsrepo (glob)
+ scanning source...
+ collecting CVS rlog
+ 12 log entries
+ creating changesets
+ warning: CVS commit message references non-existent branch 'v1-1':
+ fix file1 [MERGE from v1-1]
+ 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
+
+ $ template="{rev}: '{branches}' {desc}\n"
+ $ hg -R proj.hg log --template="$template"
+ 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
+
+ $ hg -R proj.hg glog --template="$template"
+ 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
+