| Revision 47 (by dpavlin, 2007/11/02 12:11:31) |
integrated changes from Samuel Gélineau which implement .keepme files inside
directories to fix basically all problems with directories. |
#!/bin/sh -x
dir=/dev/shm
test -e $dir || dir=/tmp/
svn_rep=$dir/test-svn-rep/
svn_co=$dir/test-svn-co/
cvs_rep=$dir/test-cvs-rep/
cvs_co=$dir/test-cvs-co/
test -d $svn_rep && rm -Rf $svn_rep
test -d $svn_co && rm -Rf $svn_co
test -d $cvs_rep && rm -Rf $cvs_rep
test -d $cvs_co && rm -Rf $cvs_co
svnadmin create $svn_rep || exit
mkdir $svn_co || exit
svn import -m "initial import" $svn_co file://$svn_rep || exit
rm -Rf $svn_co || exit
svn co file://$svn_rep $svn_co || exit
mkdir $svn_co/dir || exit
svn add $svn_co/dir || exit
svn commit -m "dir" $svn_co/dir || exit
mkdir "$svn_co/dir/with space" || exit
svn add "$svn_co/dir/with space" || exit
svn commit -m "dir with space" "$svn_co/dir/with space" || exit
ps ax > $svn_co/dir/file || exit
ps ax > "$svn_co/dir/file with spaces" || exit
svn add $svn_co/dir/file "$svn_co/dir/file with spaces" || exit
svn commit -m "files" $svn_co || exit
svn rm $svn_co/dir/file || exit
svn rm "$svn_co/dir/file with spaces" || exit
svn commit -m "delete files" $svn_co || exit
export CVSROOT=$cvs_rep
mkdir $cvs_rep || exit
cvs -f init || exit
mkdir $cvs_co || exit
cd $cvs_co || exit
cvs -f co . || exit
mkdir $cvs_co/dir || exit
cvs -f add dir $cvs_co/dir || exit
cvs -f commit -m "fake repository root" dir $cvs_co/dir || exit
echo 0 > $cvs_co/dir/.svnrev || exit
cvs -f add $cvs_co/dir/.svnrev || exit
cvs -f commit -m "fake existing repository" $cvs_co/dir/.svnrev || exit
cd - || exit
rm -Rf $cvs_co || exit
mkdir $cvs_co || exit
cd $cvs_co && cvs -f co -P dir && cd - || exit
function svn2cvs() {
./svn2cvs.pl file://$svn_rep/dir $cvs_rep dir || exit
}
function update_cvs() {
cd $cvs_co && cvs -f update -P -d dir && cd - || exit
}
function update_svn() {
svn update $svn_co || exit
}
function update_all() {
update_svn
update_cvs
}
function test() {
svn2cvs
update_all
diff -x .svn\* -x CVS -x '\.keepme' -urw $svn_co/dir/ $cvs_co/dir/ || exit
}
svn2cvs
update_cvs
test -d "$cvs_co/dir/with space" || exit
ps ax > $svn_co/dir/file || exit
svn add $svn_co/dir/file || exit
svn commit -m "file again" $svn_co || exit
test
svn rm $svn_co/dir/file || exit
svn commit -m "remove file again" $svn_co || exit
test
echo "new file" > $svn_co/dir/skip_add
svn add $svn_co/dir/skip_add || exit
svn commit -m "add skip_add" $svn_co || exit
echo "modify file" >> $svn_co/dir/skip_add
svn commit -m "modify skip_add" $svn_co || exit
cvs_rev=`cat $cvs_co/dir/.svnrev`
echo "*** skipping revision $cvs_rev ***"
echo `expr $cvs_rev + 1` > $cvs_co/dir/.svnrev || exit
cd $cvs_co && cvs -f commit -m "skip $cvs_rev" dir/.svnrev && cd - || exit
test
echo keep > $svn_co/dir/keep
svn add $svn_co/dir/keep
svn mkdir $svn_co/dir/keep-dir
echo keep > $svn_co/dir/keep-dir/keep
svn add $svn_co/dir/keep-dir/keep
svn commit -m "stuff to keep" $svn_co || exit
test
svn rm $svn_co/dir/keep-dir/keep
svn commit -m "remove keep in keep-dir" $svn_co || exit
test
svn mv $svn_co/dir/keep $svn_co/dir/keep-dir/ || exit
svn commit -m "move keep into keep-dir" $svn_co || exit
test
svn mv $svn_co/dir/keep-dir/keep $svn_co/dir/keep || exit
svn commit -m "move keep back" $svn_co || exit
test
echo bar > $svn_co/dir/bar
echo baz > $svn_co/dir/baz
svn mkdir $svn_co/dir/l1
echo bar > $svn_co/dir/l1/bar
echo baz > $svn_co/dir/l1/baz
svn mkdir $svn_co/dir/l1/l2
echo bar > $svn_co/dir/l1/l2/bar
echo baz > $svn_co/dir/l1/l2/baz
svn mkdir $svn_co/dir/l1/l2/l3
echo bar > $svn_co/dir/l1/l2/l3/bar
echo baz > $svn_co/dir/l1/l2/l3/baz
svn add $svn_co/dir/* $svn_co/dir/l1 $svn_co/dir/l1/* $svn_co/dir/l1/l2/* $svn_co/dir/l1/l2/l3/*
svn commit -m "add a bunch of stuff" $svn_co || exit
test
svn rm $svn_co/dir/* || exit
svn revert $svn_co/dir/keep $svn_co/dir/keep-dir{,/keep}
svn commit -m "remove everything" $svn_co || exit
test