131 lines
2.7 KiB
Plaintext
131 lines
2.7 KiB
Plaintext
|
#!/bin/sh
|
||
|
#
|
||
|
# $Id: cvsup 15788 2007-01-24 13:49:38Z dts12 $
|
||
|
#
|
||
|
TAG=
|
||
|
WO=0
|
||
|
DEST=
|
||
|
TMPDIR=/tmp
|
||
|
|
||
|
if [ "x$1" = "x-u" ]; then
|
||
|
DEST=$2
|
||
|
shift 2
|
||
|
|
||
|
# gnu tar (as of 1.15.1) is unable to create portable tar archives,
|
||
|
# especially if long file names (>100 char) are present.
|
||
|
# star is a better replacement.
|
||
|
if [ -x /usr/bin/star ]; then
|
||
|
TAR='/usr/bin/star -Hustar -not -pat=*/.svn/* -c -f'
|
||
|
elif [ -x /bin/tar ]; then
|
||
|
TAR="/bin/tar --exclude=.svn -c -f"
|
||
|
echo "warning: star not available, using (less portable) tar..."
|
||
|
else
|
||
|
echo "neither /usr/bin/star nor /bin/tar found."
|
||
|
exit
|
||
|
fi
|
||
|
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/.svn ]; then
|
||
|
echo "'$DIR' has no .svn directory!"
|
||
|
exit
|
||
|
fi
|
||
|
|
||
|
if [ ! -f $DIR/.svn/entries ]; then
|
||
|
echo "'$DIR' has no .svn/entries!"
|
||
|
exit
|
||
|
fi
|
||
|
|
||
|
SVNURL=`svn info $DIR| grep URL|cut -f2 -d " "`
|
||
|
SVNTLD=`echo $SVNURL | sed 's:.*svnroot/net-snmp/\([^/]*\).*:\1:'`
|
||
|
if [ "x$SVNTLD" = "xtrunk" ]; then
|
||
|
TAG="main"
|
||
|
else
|
||
|
TAG=`echo $SVNURL | sed 's:.*svnroot/net-snmp/[^/]*/\([^/]*\).*:\1:'`
|
||
|
fi
|
||
|
|
||
|
if [ ! -z $DEST ]; then
|
||
|
if [ -z $TAG ]; then
|
||
|
echo "no TAG found in $DIR!"
|
||
|
exit 1
|
||
|
fi
|
||
|
fi
|
||
|
|
||
|
COMMAND="svn update -q $SVNURL $DIR"
|
||
|
|
||
|
if [ ! -w $DIR/.svn ]; then
|
||
|
if [ -O $DIR/.svn ]; then
|
||
|
WO=1
|
||
|
echo "Making $DIR writable"
|
||
|
chmod -R u+w $DIR
|
||
|
fi
|
||
|
fi
|
||
|
|
||
|
echo "Updating directory $DIR from $TAG..."
|
||
|
echo "$COMMAND"
|
||
|
|
||
|
$COMMAND
|
||
|
rc=$?
|
||
|
if [ $rc -ne 0 ]; then
|
||
|
echo "svn command returned $?"
|
||
|
fi
|
||
|
|
||
|
if [ $WO -eq 1 ]; then
|
||
|
echo "Making $DIR read-only"
|
||
|
chmod -R a-w $DIR
|
||
|
fi
|
||
|
|
||
|
if [ ! -z $DEST ]; then
|
||
|
if [ $rc -ne 0 ]; then
|
||
|
echo "skipping upload due to rc $rc from svn command"
|
||
|
exit $rc
|
||
|
else
|
||
|
cd $DIR/..
|
||
|
#echo $PWD
|
||
|
DATE=`date +%Y%m%d_%H%M`
|
||
|
SOURCE=net-snmp-svn-$TAG"_$DATE"
|
||
|
$TAR $TMPDIR/$SOURCE.tar $SUBD
|
||
|
rc=$?
|
||
|
if [ $rc -ne 0 ]; then
|
||
|
echo "skipping upload due to rc $rc from tar command"
|
||
|
rm -f $TMPDIR/$SOURCE.tar.gz
|
||
|
exit $rc
|
||
|
fi
|
||
|
gzip -f --best $TMPDIR/$SOURCE.tar
|
||
|
rc=$?
|
||
|
if [ $rc -ne 0 ]; then
|
||
|
echo "skipping upload due to rc $rc from gzip command"
|
||
|
rm -f $TMPDIR/$SOURCE.tar.gz
|
||
|
exit $rc
|
||
|
fi
|
||
|
scp $TMPDIR/$SOURCE.tar.gz $DEST
|
||
|
rc=$?
|
||
|
if [ $rc -ne 0 ]; then
|
||
|
echo "warning: rc $rc from scp command (tarball in $TMPDIR)"
|
||
|
else
|
||
|
rm -f $TMPDIR/$SOURCE.tar.gz
|
||
|
fi
|
||
|
fi
|
||
|
fi
|