mirror of
https://github.com/facebook/sapling.git
synced 2024-10-09 16:31:02 +03:00
4ad17e2831
This records the branches starting at individual CVS file revisions, using the symbolic names map rather than just the branches information. This information is used to generate Mercurial changesets. Despite the changes, the CVS conversion still suffers heavily from cvsps' deficiencies in generating a correct representation of the CVS repository history.
123 lines
2.8 KiB
Bash
Executable File
123 lines
2.8 KiB
Bash
Executable File
#!/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
|
|
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 % 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:/'
|