#!/bin/sh
#
export CVS_RSH=ssh
TAG=

do_cvs()
{
   DIR=$1
   if [ ! -f $DIR/CVS/Repository ]; then
	echo "'$DIR' has no CVS/Repository!"
	exit
   fi

   if [ ! -f $DIR/CVS/Root ]; then
	echo "'$DIR' has no CVS/Root!"
	exit
   fi

   if [ -f $DIR/CVS/Tag ]; then
	TAG="-r `cat $DIR/CVS/Tag | cut -c 2-`"
   fi

   REP="`cat $DIR/CVS/Repository`"
   ROOT="`cat $DIR/CVS/Root`"

   echo "Directory $DIR is rooted at $ROOT, $TAG $REP..."
   echo "   update with cvs -z3 -d $ROOT -q co $TAG -d $DIR $REP"
}

do_svn()
{
   DIR=$1
   if [ ! -d $DIR/.svn ]; then
	echo "'$DIR' has no .svn/ subdir!"
	exit
   fi

   ROOT=`svn info | grep URL|cut -f2 -d " "`
   if [ -z "$ROOT" ]; then
      echo "Couldn't find root from $DIR/.svn/entries"
      exit 1
   fi

   echo "Directory $DIR is rooted at $ROOT..."
   echo "   update with svn co $ROOT $DIR"
}

if [ $# -eq 0 ]; then
	DIRS=.
else
	DIRS=$@
fi

for d in $DIRS
do
   if [ ! -d $d ]; then
	echo "no such directory '$d'"
	exit
   fi

   if [ -d $d/CVS ]; then
	do_cvs $d
   elif [ -d $d/.svn ]; then
	do_svn $d
   else
	echo "'$d' has neither CVS nor SVN information!"
   fi
done

