Mercurial > public > mercurial-scm > hg-stable
diff tests/test-convert-cvs-detectmerge @ 8170:6c4fdde87f90
cvsps: add test for merge detection (issue1615).
Currently only testing convert.cvsps.mergefrom; this script should also
probably test convert.cvsps.mergeto.
author | Greg Ward <greg-hg@gerg.ca> |
---|---|
date | Sun, 19 Apr 2009 12:20:39 -0400 |
parents | |
children | 4e5bd9b97bb3 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test-convert-cvs-detectmerge Sun Apr 19 12:20:39 2009 -0400 @@ -0,0 +1,108 @@ +#!/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