#!/bin/sh

SVNSERVE_PORT=36380

# define home directories
SVN14_HOME=/usr/local/subversion_1.4
SVN15_HOME=/usr
JSVN_HOME=/usr/local/svnkit

SVN15=$SVN15_HOME/bin/svn
SVN14=$SVN14_HOMR/bin/svn
JSVN=$JSVN_HOME/lib/jsvn

# Here you may change binaries to use
SVN=$SVN15
SVNADMIN=$SVN14_HOME/bin/svnadmin
SVNSERVE=$SVN14_HOME/bin/svnserve

TMP=/tmp/sparse_wc_test
REPO_PATH=$TMP/repo
# REPO_URL=file://$REPO_PATH
REPO_URL=svn://localhost:$SVNSERVE_PORT
WC=$TMP/wc

SVNSERVE_PID_FILE=$TMP/svnserve.pid

create_cfg() {
	config=$1/conf/svnserve.conf
	echo "[general]" > $config 
	echo "anon-access = write" >> $config	
}

init() {
	if [ ! -d $SVN14_HOME ]; then
		echo "define home directory for svn version 1.4 binaries" >&2
		exit 1
	fi

	if [ ! -d $SVN15_HOME ]; then
		echo "define home directory for svn version 1.5 binaries" >&2
		exit 1
	fi	

        rm -rf $TMP
        mkdir $TMP

        $SVNADMIN create $REPO_PATH
	create_cfg $REPO_PATH
	$SVNSERVE -d -r $REPO_PATH --listen-port $SVNSERVE_PORT --pid-file $SVNSERVE_PID_FILE

	mkdir $WC
	mkdir $WC/trunk
	mkdir $WC/trunk/remote
	echo "file content" > $WC/trunk/remote/deleteme
	mkdir $WC/trunk/local

	$SVN import -m "initial revision" $WC $REPO_URL
	rm -rf $WC
}

run() {
	$SVN co --depth empty $REPO_URL/trunk $WC
	$SVN update --depth infinity $WC/local

	$SVN delete -m "deleteme file removed" $REPO_URL/trunk/remote/deleteme

	$SVN status -u $WC
}

dispose() {
	pid=`cat $SVNSERVE_PID_FILE`
	kill -9 $pid
	rm -rf $TMP	
}

init > /dev/null
echo "created repository:"
echo "trunk"
echo "  local"
echo "  remote"
echo "    deleteme"
echo
echo "svn co --depth empty repo/trunk wc"
echo "svn update --depth infinity wc/local"
echo "svn delete repo/trunk/remote/deleteme"
echo "and now svn 'status -u' failes with error:"
echo
run > /dev/null
dispose > /dev/null