|
|
#!/bin/sh
|
|
|
|
|
|
"$TESTDIR/hghave" cvs || exit 80
|
|
|
|
|
|
filterpath()
|
|
|
{
|
|
|
eval "$@" | sed "s:$CVSROOT:*REPO*:g"
|
|
|
}
|
|
|
|
|
|
cvscall()
|
|
|
{
|
|
|
echo cvs -f "$@"
|
|
|
cvs -f "$@"
|
|
|
}
|
|
|
|
|
|
# output of 'cvs ci' varies unpredictably, so discard most of it
|
|
|
# -- just keep the part that matters
|
|
|
cvsci()
|
|
|
{
|
|
|
echo cvs -f ci -f "$@"
|
|
|
cvs -f ci -f "$@" 2>&1 | egrep "^(new|initial) revision:"
|
|
|
}
|
|
|
|
|
|
hgcat()
|
|
|
{
|
|
|
hg --cwd src-hg cat -r tip "$1"
|
|
|
}
|
|
|
|
|
|
echo "[extensions]" >> $HGRCPATH
|
|
|
echo "convert = " >> $HGRCPATH
|
|
|
echo "graphlog = " >> $HGRCPATH
|
|
|
|
|
|
echo "% create cvs repository"
|
|
|
mkdir cvsmaster
|
|
|
cd cvsmaster
|
|
|
CVSROOT=`pwd`
|
|
|
export CVSROOT
|
|
|
CVS_OPTIONS=-f
|
|
|
export CVS_OPTIONS
|
|
|
cd ..
|
|
|
filterpath cvscall -Q -d "$CVSROOT" init
|
|
|
|
|
|
echo "% checkout #1: add foo.txt"
|
|
|
cvscall -Q checkout -d cvsworktmp .
|
|
|
cd cvsworktmp
|
|
|
mkdir foo
|
|
|
cvscall -Q add foo
|
|
|
cd foo
|
|
|
echo foo > foo.txt
|
|
|
cvscall -Q add foo.txt
|
|
|
cvsci -m "add foo.txt" foo.txt
|
|
|
|
|
|
cd ../..
|
|
|
rm -rf cvsworktmp
|
|
|
|
|
|
echo "% checkout #2: create MYBRANCH1 and modify foo.txt on it"
|
|
|
cvscall -Q checkout -d cvswork foo
|
|
|
|
|
|
cd cvswork
|
|
|
|
|
|
cvscall -q rtag -b -R MYBRANCH1 foo
|
|
|
cvscall -Q update -P -r MYBRANCH1
|
|
|
echo bar > foo.txt
|
|
|
cvsci -m "bar" foo.txt
|
|
|
echo baz > foo.txt
|
|
|
cvsci -m "baz" foo.txt
|
|
|
|
|
|
echo "% create MYBRANCH1_2 and modify foo.txt some more"
|
|
|
cvscall -q rtag -b -R -r MYBRANCH1 MYBRANCH1_2 foo
|
|
|
cvscall -Q update -P -r MYBRANCH1_2
|
|
|
|
|
|
echo bazzie > foo.txt
|
|
|
cvsci -m "bazzie" foo.txt
|
|
|
|
|
|
echo "% create MYBRANCH1_1 and modify foo.txt yet again"
|
|
|
cvscall -q rtag -b -R MYBRANCH1_1 foo
|
|
|
cvscall -Q update -P -r MYBRANCH1_1
|
|
|
|
|
|
echo quux > foo.txt
|
|
|
cvsci -m "quux" foo.txt
|
|
|
|
|
|
echo "% merge MYBRANCH1 to MYBRANCH1_1"
|
|
|
filterpath cvscall -Q update -P -jMYBRANCH1
|
|
|
# carefully placed sleep to dodge cvs bug (optimization?) where it
|
|
|
# sometimes ignores a "commit" command if it comes too fast (the -f
|
|
|
# option in cvsci seems to work for all the other commits in this
|
|
|
# script)
|
|
|
sleep 1
|
|
|
echo xyzzy > foo.txt
|
|
|
cvsci -m "merge1+clobber" foo.txt
|
|
|
|
|
|
echo "% return to trunk and merge MYBRANCH1_2"
|
|
|
cvscall -Q update -P -A
|
|
|
filterpath cvscall -Q update -P -jMYBRANCH1_2
|
|
|
cvsci -m "merge2" foo.txt
|
|
|
|
|
|
REALCVS=`which cvs`
|
|
|
echo "for x in \$*; do if [ \"\$x\" = \"rlog\" ]; then echo \"RCS file: $CVSROOT/foo/foo.txt,v\"; cat $TESTDIR/test-convert-cvsnt-mergepoints.rlog; exit 0; fi; done; $REALCVS \$*" > ../cvs
|
|
|
chmod +x ../cvs
|
|
|
PATH=..:${PATH} hg debugcvsps --parents foo | sed -e 's/Author:.*/Author:/' -e 's/Date:.*/Date:/'
|
|
|
|
|
|
cd ..
|
|
|
|