Dave Shield | b3df9cf | 2007-01-24 13:49:38 +0000 | [diff] [blame] | 1 | #!/bin/sh |
Robert Story | 3eb149e | 2002-08-01 18:51:44 +0000 | [diff] [blame] | 2 | # |
| 3 | # $Id$ |
| 4 | # |
Dave Shield | b3df9cf | 2007-01-24 13:49:38 +0000 | [diff] [blame] | 5 | CVS_RSH=ssh; export CVS_RSH |
Robert Story | 3eb149e | 2002-08-01 18:51:44 +0000 | [diff] [blame] | 6 | TAG= |
Robert Story | d6e51b8 | 2002-09-30 18:58:42 +0000 | [diff] [blame] | 7 | WO=0 |
Robert Story | 842c088 | 2003-08-17 23:17:00 +0000 | [diff] [blame] | 8 | DEST= |
Robert Story | 3eb149e | 2002-08-01 18:51:44 +0000 | [diff] [blame] | 9 | |
Robert Story | 842c088 | 2003-08-17 23:17:00 +0000 | [diff] [blame] | 10 | if [ "x$1" = "x-u" ]; then |
| 11 | DEST=$2 |
| 12 | shift 2 |
Robert Story | 8d20bc5 | 2006-10-18 14:45:18 +0000 | [diff] [blame] | 13 | |
| 14 | # gnu tar (as of 1.15.1) is unable to create portable tar archives, |
| 15 | # especially if long file names (>100 char) are present. |
| 16 | # star is a better replacement. |
| 17 | if [ -x /usr/bin/star ]; then |
| 18 | TAR='/usr/bin/star -Hustar -not -pat="*/CVS/*" -c -f' |
| 19 | elif [ -x /bin/tar ]; then |
| 20 | TAR="/bin/tar --exclude=CVS -c -f" |
Robert Story | a3e5742 | 2007-05-15 15:55:31 +0000 | [diff] [blame] | 21 | echo "warning: star not available, using (less portable) tar..." |
Robert Story | 8d20bc5 | 2006-10-18 14:45:18 +0000 | [diff] [blame] | 22 | else |
| 23 | echo "neither /usr/bin/star nor /bin/tar found." |
| 24 | exit |
| 25 | fi |
Robert Story | 842c088 | 2003-08-17 23:17:00 +0000 | [diff] [blame] | 26 | fi |
Robert Story | 31e44f6 | 2002-11-05 16:59:40 +0000 | [diff] [blame] | 27 | |
Robert Story | 3eb149e | 2002-08-01 18:51:44 +0000 | [diff] [blame] | 28 | if [ $# -eq 0 ]; then |
Robert Story | 842c088 | 2003-08-17 23:17:00 +0000 | [diff] [blame] | 29 | DIR=$PWD |
Robert Story | 3eb149e | 2002-08-01 18:51:44 +0000 | [diff] [blame] | 30 | else |
Robert Story | 31e44f6 | 2002-11-05 16:59:40 +0000 | [diff] [blame] | 31 | if [ $# -ne 1 ]; then |
| 32 | echo "usage: $0 <working directory>" |
| 33 | exit |
| 34 | fi |
| 35 | DIR=$1 |
Robert Story | 3eb149e | 2002-08-01 18:51:44 +0000 | [diff] [blame] | 36 | fi |
| 37 | |
Robert Story | 842c088 | 2003-08-17 23:17:00 +0000 | [diff] [blame] | 38 | if [ -z ${DIR##*/} ];then |
| 39 | DIR=${DIR%/*} |
| 40 | fi |
| 41 | SUBD=${DIR##*/} |
| 42 | PARENT=${DIR%*$SUBD} |
| 43 | #echo "$DIR = $PARENT + $SUBD" |
| 44 | |
Robert Story | 3eb149e | 2002-08-01 18:51:44 +0000 | [diff] [blame] | 45 | if [ ! -d $DIR ]; then |
Robert Story | 31e44f6 | 2002-11-05 16:59:40 +0000 | [diff] [blame] | 46 | echo "no such directory '$DIR'" |
| 47 | exit |
Robert Story | 3eb149e | 2002-08-01 18:51:44 +0000 | [diff] [blame] | 48 | fi |
| 49 | |
| 50 | if [ ! -d $DIR/CVS ]; then |
Robert Story | 31e44f6 | 2002-11-05 16:59:40 +0000 | [diff] [blame] | 51 | echo "'$DIR' has no CVS directory!" |
| 52 | exit |
Robert Story | 3eb149e | 2002-08-01 18:51:44 +0000 | [diff] [blame] | 53 | fi |
| 54 | |
| 55 | if [ ! -f $DIR/CVS/Repository ]; then |
Robert Story | 31e44f6 | 2002-11-05 16:59:40 +0000 | [diff] [blame] | 56 | echo "'$DIR' has no CVS/Repository!" |
| 57 | exit |
Robert Story | 3eb149e | 2002-08-01 18:51:44 +0000 | [diff] [blame] | 58 | fi |
| 59 | |
| 60 | if [ ! -f $DIR/CVS/Root ]; then |
Robert Story | 31e44f6 | 2002-11-05 16:59:40 +0000 | [diff] [blame] | 61 | echo "'$DIR' has no CVS/Root!" |
| 62 | exit |
Robert Story | 3eb149e | 2002-08-01 18:51:44 +0000 | [diff] [blame] | 63 | fi |
| 64 | |
| 65 | if [ -f $DIR/CVS/Tag ]; then |
Robert Story | 842c088 | 2003-08-17 23:17:00 +0000 | [diff] [blame] | 66 | TAG=`cat $DIR/CVS/Tag | cut -c 2-` |
| 67 | CMDTAG="-r $TAG" |
Robert Story | 3eb149e | 2002-08-01 18:51:44 +0000 | [diff] [blame] | 68 | fi |
| 69 | |
| 70 | REP="`cat $DIR/CVS/Repository`" |
| 71 | ROOT="`cat $DIR/CVS/Root`" |
| 72 | |
Robert Story | 842c088 | 2003-08-17 23:17:00 +0000 | [diff] [blame] | 73 | cd $DIR |
| 74 | #echo $PWD |
| 75 | # COMMAND="cvs -q -z3 -d $ROOT co $TAG -d $DIR $REP" |
| 76 | |
| 77 | COMMAND="cvs -q -z3 -d $ROOT update -P -d $CMDTAG" |
Robert Story | 3eb149e | 2002-08-01 18:51:44 +0000 | [diff] [blame] | 78 | |
Robert Story | d6e51b8 | 2002-09-30 18:58:42 +0000 | [diff] [blame] | 79 | if [ ! -w $DIR/CVS ]; then |
Robert Story | 31e44f6 | 2002-11-05 16:59:40 +0000 | [diff] [blame] | 80 | if [ -O $DIR/CVS ]; then |
| 81 | WO=1 |
| 82 | echo "Making $DIR writable" |
| 83 | chmod -R u+w $DIR |
| 84 | fi |
Robert Story | d6e51b8 | 2002-09-30 18:58:42 +0000 | [diff] [blame] | 85 | fi |
| 86 | |
Robert Story | 3eb149e | 2002-08-01 18:51:44 +0000 | [diff] [blame] | 87 | echo "Updating directory $DIR with $TAG $REP..." |
| 88 | echo "$COMMAND" |
| 89 | |
| 90 | $COMMAND |
Robert Story | a856f61 | 2004-06-07 18:39:29 +0000 | [diff] [blame] | 91 | rc=$? |
| 92 | if [ $rc -ne 0 ]; then |
| 93 | echo "cvs command returned $?" |
| 94 | fi |
Robert Story | d6e51b8 | 2002-09-30 18:58:42 +0000 | [diff] [blame] | 95 | |
| 96 | if [ $WO -eq 1 ]; then |
Robert Story | 31e44f6 | 2002-11-05 16:59:40 +0000 | [diff] [blame] | 97 | echo "Making $DIR read-only" |
| 98 | chmod -R a-w $DIR |
Robert Story | d6e51b8 | 2002-09-30 18:58:42 +0000 | [diff] [blame] | 99 | fi |
| 100 | |
Robert Story | 842c088 | 2003-08-17 23:17:00 +0000 | [diff] [blame] | 101 | if [ ! -z $DEST ]; then |
| 102 | if [ -z $TAG ]; then |
| 103 | TAG=MAIN |
| 104 | fi |
| 105 | |
Robert Story | a856f61 | 2004-06-07 18:39:29 +0000 | [diff] [blame] | 106 | if [ $rc -ne 0 ]; then |
| 107 | echo "skipping upload" |
| 108 | else |
Robert Story | 842c088 | 2003-08-17 23:17:00 +0000 | [diff] [blame] | 109 | cd .. |
| 110 | # echo $PWD |
Robert Story | e39cc7c | 2003-08-21 21:28:55 +0000 | [diff] [blame] | 111 | DATE=`date +%Y%m%d_%H%M` |
| 112 | SOURCE=$REP-cvs-$TAG"_$DATE" |
Robert Story | 5ca0239 | 2006-03-08 18:48:38 +0000 | [diff] [blame] | 113 | $TAR /tmp/$SOURCE.tar $SUBD |
Robert Story | 842c088 | 2003-08-17 23:17:00 +0000 | [diff] [blame] | 114 | gzip -f --best /tmp/$SOURCE.tar |
| 115 | scp /tmp/$SOURCE.tar.gz $DEST |
Robert Story | 4bb75b8 | 2004-03-22 23:37:22 +0000 | [diff] [blame] | 116 | rm -f /tmp/$SOURCE.tar.gz |
Robert Story | a856f61 | 2004-06-07 18:39:29 +0000 | [diff] [blame] | 117 | fi |
Robert Story | 842c088 | 2003-08-17 23:17:00 +0000 | [diff] [blame] | 118 | fi |