test-convert-cvs-detectmerge
116 lines
| 2.6 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 | ||||
Martin Geisler
|
r8350 | CVSROOT=`pwd`/cvsrepo | ||
export CVSROOT | ||||
Greg Ward
|
r8170 | |||
# 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 | ||||
Greg Ward
|
r8171 | echo "graphlog = " >> $HGRCPATH | ||
Greg Ward
|
r8170 | echo "[convert]" >> $HGRCPATH | ||
Greg Ward
|
r8171 | echo "cvsps.cache=0" >> $HGRCPATH | ||
Greg Ward
|
r8170 | 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 | ||||
Greg Ward
|
r8171 | 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 | ||||
Greg Ward
|
r8170 | 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" | ||||
Greg Ward
|
r8171 | echo % graphical log | ||
hg -R proj.hg glog --template="$template" | ||||