tests/test-convert-cvs-builtincvsps
author Edouard Gomez <ed.gomez@free.fr>
Sun, 04 Jan 2009 02:36:48 +0100
changeset 7583 77fec2d270ae
parent 7503 09508f8e2fa4
child 7594 a204547790bc
permissions -rwxr-xr-x
convert/gnuarch: parse continuation-of revisions in gnuarch source In GNU Arch, continuation-of was often used for: - tagging revisions - continue working on a project in a new archive, because arch was scaling poorly in revision numbers (cat-logs were slow to be parsed and scanned through) - very similar to the previous point, fork his own branch of a project. Parsing this header information will allow to 'follow' new history because it often hints at older/forked/personal revision trees. This patch however just implements the parsing of the continuation-of header. A followup patch will implement the proper use of this new information.

#!/bin/sh

"$TESTDIR/hghave" cvs || exit 80

cvscall()
{
    cvs -f "$@"
}

hgcat()
{
    hg --cwd src-hg cat -r tip "$1"
}

echo "[extensions]" >> $HGRCPATH
echo "convert = " >> $HGRCPATH
echo "graphlog = " >> $HGRCPATH
echo "[convert]" >> $HGRCPATH
echo "cvsps=builtin" >> $HGRCPATH

echo % create cvs repository
mkdir cvsrepo
cd cvsrepo
export CVSROOT=`pwd`
export CVS_OPTIONS=-f
cd ..

cvscall -q -d "$CVSROOT" init

echo % create source directory
mkdir src-temp
cd src-temp
echo a > a
mkdir b
cd b
echo c > c
cd ..

echo % import source directory
cvscall -q import -m import src INITIAL start
cd ..

echo % checkout source directory
cvscall -q checkout src

echo % commit a new revision changing b/c
cd src
sleep 1
echo c >> b/c
cvscall -q commit -mci0 . | grep '<--' |\
    sed -e 's:.*src/\(.*\),v.*:checking in src/\1,v:g'
cd ..

echo % convert fresh repo
hg convert src src-hg | sed -e 's/connecting to.*cvsrepo/connecting to cvsrepo/g'
hgcat a
hgcat b/c

echo % convert fresh repo with --filemap
echo include b/c > filemap
hg convert --filemap filemap src src-filemap | sed -e 's/connecting to.*cvsrepo/connecting to cvsrepo/g'
hgcat b/c
hg -R src-filemap log --template '#rev# #desc# files: #files#\n'

echo % commit new file revisions
cd src
echo a >> a
echo c >> b/c
cvscall -q commit -mci1 . | grep '<--' |\
    sed -e 's:.*src/\(.*\),v.*:checking in src/\1,v:g'
cd ..

echo % convert again
hg convert src src-hg | sed -e 's/connecting to.*cvsrepo/connecting to cvsrepo/g'
hgcat a
hgcat b/c

echo % convert again with --filemap
hg convert --filemap filemap src src-filemap | sed -e 's/connecting to.*cvsrepo/connecting to cvsrepo/g'
hgcat b/c
hg -R src-filemap log --template '#rev# #desc# files: #files#\n'

echo % commit branch
cd src
cvs -q update -r1.1 b/c
cvs -q tag -b branch
cvs -q update -r branch
echo d >> b/c
cvs -q commit -mci2 . | grep '<--' |\
    sed -e 's:.*src/\(.*\),v.*:checking in src/\1,v:g'
cd ..

echo % convert again
hg convert src src-hg | sed -e 's/connecting to.*cvsrepo/connecting to cvsrepo/g'
hgcat a
hgcat b/c

echo % convert again with --filemap
hg convert --filemap filemap src src-filemap | sed -e 's/connecting to.*cvsrepo/connecting to cvsrepo/g'
hgcat b/c
hg -R src-filemap log --template '#rev# #desc# files: #files#\n'

echo "graphlog = " >> $HGRCPATH
hg -R src-hg glog --template '#rev# (#branches#) #desc# files: #files#\n'

echo % testing debugcvsps
cd src
hg debugcvsps | sed -e 's/Author:.*/Author:/' -e 's/Date:.*/Date:/'