#!/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 " 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