mirror of
https://github.com/facebook/sapling.git
synced 2024-10-10 08:47:12 +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.
113 lines
2.0 KiB
Bash
Executable File
113 lines
2.0 KiB
Bash
Executable File
#!/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 ..
|
|
|