#!/bin/sh

set -e
shopt -s extglob

# Prerequisites:
# * cvs2svn version 1.2.1 or newer
# * an (empty) directory "cvs2svn" in the working directory

if test ! -d cvs2svn; then
    # Don't run in the wrong directory.
    echo 'Directory "cvs2svn" not found.  Aborting.'
    exit 1
fi

date="`date --utc --iso-8601`"
snapshot=docutils-cvsroot-$date.tar.bz2

# If there's no snapshot from today, retrieve a new one.
if test ! -f $snapshot; then
    rm -f docutils-cvsroot.tar.bz2
    wget http://cvs.sourceforge.net/cvstarballs/docutils-cvsroot.tar.bz2
    mv -v docutils-cvsroot.tar.bz2 $snapshot
fi

rm docutils -rf
rm docutils-$date -rf
echo Unpacking...
tar xjf docutils-cvsroot-$date.tar.bz2
mv -v docutils docutils-$date

cd cvs2svn
# Clean up.
rm docutils-cvs-$date -rf
rm docutils-svn-$date -rf
# Get a copy of the current CVS repository to mess around with.
cp ../docutils-$date ./docutils-cvs-$date -R
# Remove unnecessary stuff.
cd docutils-cvs-$date/
# CVSROOT isn't needed, standard.txt,v is broken.
rm CVSROOT sandbox/felixwiemann/testing/data/Attic/standard.txt,v -rf
cd ..
# Launch cvs2svn.
nice -n 10 cvs2svn -s docutils-svn-$date --fs-type=fsfs --cvs-revnums docutils-cvs-$date
cd docutils-svn-$date
# Add post-commit hook.
sed 's/commit-watchers@example\.org/-h users.berlios.de docutils-checkins@lists.sourceforge.net/;
     s/^log-commit/#log-commit/' < hooks/post-commit.tmpl > hooks/post-commit
chmod a+x hooks/post-commit
# Set permissions.
chmod g+u * -R
find * -type d | xargs chmod g+s
# Create tarball.
tar cjvf ../docutils-svn-$date.tar.bz2 *
cd ..
echo
echo 'To upload, type:'
echo
echo "bar -if docutils-svn-$date.tar.bz2 | ssh svn.berlios.de \\"
echo "    'cd /svnroot/repos/docutils/; rm -rf *;"
echo "     cat > docutils-svn-$date.tar.bz2;"
echo "     nice tar xpjf docutils-svn-$date.tar.bz2'"
