##// END OF EJS Templates
cvsps: add test for merge detection (issue1615)....
cvsps: add test for merge detection (issue1615). Currently only testing convert.cvsps.mergefrom; this script should also probably test convert.cvsps.mergeto.

File last commit:

r8170:6c4fdde8 default
r8170:6c4fdde8 default
Show More
test-convert-cvs-detectmerge
108 lines | 2.5 KiB | text/plain | TextLexer
/ tests / test-convert-cvs-detectmerge
Greg Ward
cvsps: add test for merge detection (issue1615)....
r8170 #!/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
export CVSROOT=`pwd`/cvsrepo
# 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 "[convert]" >> $HGRCPATH
echo "cvsps=builtin" >> $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 % 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 % parents of rev 3
hg -R proj.hg parents --template="$template" -r3
echo % parents of rev 4
hg -R proj.hg parents --template="$template" -r4
echo % parents of rev 5
hg -R proj.hg parents --template="$template" -r5
echo % parents of rev 7
hg -R proj.hg parents --template="$template" -r7