- #!/bin/bash
- #
- # $Id: cvsup,v 1.8 2004/06/07 18:39:29 rstory Exp $
- #
- export CVS_RSH=ssh
- TAG=
- WO=0
- DEST=
- if [ "x$1" = "x-u" ]; then
- DEST=$2
- shift 2
- fi
- if [ $# -eq 0 ]; then
- DIR=$PWD
- else
- if [ $# -ne 1 ]; then
- echo "usage: $0 <working directory>"
- exit
- fi
- DIR=$1
- fi
- if [ -z ${DIR##*/} ];then
- DIR=${DIR%/*}
- fi
- SUBD=${DIR##*/}
- PARENT=${DIR%*$SUBD}
- #echo "$DIR = $PARENT + $SUBD"
- if [ ! -d $DIR ]; then
- echo "no such directory '$DIR'"
- exit
- fi
- if [ ! -d $DIR/CVS ]; then
- echo "'$DIR' has no CVS directory!"
- exit
- fi
- 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=`cat $DIR/CVS/Tag | cut -c 2-`
- CMDTAG="-r $TAG"
- fi
- REP="`cat $DIR/CVS/Repository`"
- ROOT="`cat $DIR/CVS/Root`"
- cd $DIR
- #echo $PWD
- # COMMAND="cvs -q -z3 -d $ROOT co $TAG -d $DIR $REP"
- COMMAND="cvs -q -z3 -d $ROOT update -P -d $CMDTAG"
- if [ ! -w $DIR/CVS ]; then
- if [ -O $DIR/CVS ]; then
- WO=1
- echo "Making $DIR writable"
- chmod -R u+w $DIR
- fi
- fi
- echo "Updating directory $DIR with $TAG $REP..."
- echo "$COMMAND"
- $COMMAND
- rc=$?
- if [ $rc -ne 0 ]; then
- echo "cvs command returned $?"
- fi
- if [ $WO -eq 1 ]; then
- echo "Making $DIR read-only"
- chmod -R a-w $DIR
- fi
- if [ ! -z $DEST ]; then
- if [ -z $TAG ]; then
- TAG=MAIN
- fi
- if [ $rc -ne 0 ]; then
- echo "skipping upload"
- else
- cd ..
- # echo $PWD
- DATE=`date +%Y%m%d_%H%M`
- SOURCE=$REP-cvs-$TAG"_$DATE"
- tar cf /tmp/$SOURCE.tar $SUBD
- gzip -f --best /tmp/$SOURCE.tar
- scp /tmp/$SOURCE.tar.gz $DEST
- rm -f /tmp/$SOURCE.tar.gz
- fi
- fi