#!/bin/sh
# This is http://www.selenic.com/mercurial/bts/issue1148
# and http://www.selenic.com/mercurial/bts/issue1447
"$TESTDIR/hghave" cvs || exit 80
cvscall()
{
cvs -f "$@"
}
echo "[extensions]" >> $HGRCPATH
echo "convert = " >> $HGRCPATH
echo "graphlog = " >> $HGRCPATH
echo "[convert]" >> $HGRCPATH
echo "cvsps=builtin" >> $HGRCPATH
echo "cvsps.cache=0" >> $HGRCPATH
echo % create cvs repository
mkdir cvsrepo
cd cvsrepo
CVSROOT=`pwd`
export CVSROOT
CVS_OPTIONS=-f
export CVS_OPTIONS
cd ..
cvscall -q -d "$CVSROOT" init
echo % Create a new project
mkdir src
cd src
echo "1" > a
echo "1" > b
cvscall import -m "init" src v0 r0 | sort
cd ..
cvscall co src
cd src
echo % Branch the project
cvscall tag -b BRANCH
cvscall up -r BRANCH > /dev/null
echo % Modify file a, then b, then a
echo "2" > a
cvscall ci -m "mod a" | grep '<--' | sed -e 's:.*src/\(.*\),v.*:checking in src/\1,v:g'
echo "2" > b
cvscall ci -m "mod b" | grep '<--' | sed -e 's:.*src/\(.*\),v.*:checking in src/\1,v:g'
echo "3" > a
cvscall ci -m "mod a again" | grep '<--' | sed -e 's:.*src/\(.*\),v.*:checking in src/\1,v:g'
echo % Convert
cd ..
hg convert src | sed -e 's/connecting to.*cvsrepo/connecting to cvsrepo/g'
echo % Check the result
hg -R src-hg glog --template '{rev} ({branches}) {desc} files: {files}\n'
echo ""
echo % issue 1447
cvscall()
{
echo cvs -f "$@"
cvs -f "$@"
sleep 1
}
cvsci()
{
echo cvs -f ci "$@"
cvs -f ci "$@" >/dev/null 2>&1
sleep 1
}
cvscall -Q -d `pwd`/cvsmaster2 init >/dev/null 2>&1
cd cvsmaster2
export CVSROOT=`pwd`
mkdir foo
cd ..
cvscall -Q co -d cvswork2 foo
cd cvswork2
echo foo > a.txt
echo bar > b.txt
cvscall -Q add a.txt b.txt
cvsci -m "Initial commit"
echo foo > b.txt
cvsci -m "Fix b on HEAD"
echo bar > a.txt
cvsci -m "Small fix in a on HEAD"
cvscall -Q tag -b BRANCH
cvscall -Q up -P -rBRANCH
echo baz > b.txt
cvsci -m "Change on BRANCH in b"
hg debugcvsps -x --parents foo | sed -e 's/Author:.*/Author:/' -e 's/Date:.*/Date:/'
cd ..