test-convert-cvs-detectmerge
108 lines
| 2.5 KiB
| text/plain
|
TextLexer
/ tests / test-convert-cvs-detectmerge
Greg Ward
|
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 | ||||