|
|
#!/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
|
|
|
|
|
|
cat > cvshooks.py <<EOF
|
|
|
def cvslog(ui,repo,hooktype,log):
|
|
|
print "%s hook: %d entries"%(hooktype,len(log))
|
|
|
|
|
|
def cvschangesets(ui,repo,hooktype,changesets):
|
|
|
print "%s hook: %d changesets"%(hooktype,len(changesets))
|
|
|
EOF
|
|
|
hookpath=`pwd`
|
|
|
|
|
|
echo "[hooks]" >> $HGRCPATH
|
|
|
echo "cvslog=python:$hookpath/cvshooks.py:cvslog" >> $HGRCPATH
|
|
|
echo "cvschangesets=python:$hookpath/cvshooks.py:cvschangesets" >> $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 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 % 'convert full repository (issue1649)'
|
|
|
cvscall -q -d "$CVSROOT" checkout -d srcfull "." | grep -v CVSROOT
|
|
|
ls srcfull
|
|
|
hg convert srcfull srcfull-hg \
|
|
|
| sed -e 's/connecting to.*cvsrepo/connecting to cvsrepo/g' \
|
|
|
| grep -v 'log entries' | grep -v 'hook:' \
|
|
|
| grep -v '^[0-3] .*' # filter instable changeset order
|
|
|
hg cat -r tip srcfull-hg/src/a
|
|
|
hg cat -r tip srcfull-hg/src/b/c
|
|
|
|
|
|
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 > /dev/null
|
|
|
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 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 a new revision with funny log message
|
|
|
cd src
|
|
|
sleep 1
|
|
|
echo e >> a
|
|
|
cvscall -q commit -m'funny
|
|
|
----------------------------
|
|
|
log message' . | 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'
|
|
|
|
|
|
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:/'
|
|
|
|