home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
RCS_SRC.ZIP
/
RCSFREEZ.SH
< prev
next >
Wrap
Linux/UNIX/POSIX Shell Script
|
1991-01-15
|
4KB
|
95 lines
#! /bin/sh
PATH=/usr/local/bin:/bin:/usr/bin:/usr/ucb
# 'rcsfreeze' has the purpose of assigning a symbolic revision
# number to a set of RCS files, which form a valid configuration.
#
# The idea is to run rcsfreeze each time a new version is checked
# in. A unique symbolic revision number (C_[number], where number
# is increased each time rcsfreeze is run) is then assigned to the most
# recent revision of each RCS file of the main trunk.
#
# If the command is invoked with an argument, then this
# argument is used as the symbolic name to freeze a configuration.
# The unique identifier is still generated
# and is listed in the log file but it will not appear as
# part of the symbolic revision name in the actual RCS file.
#
# A log message is requested from the user which is saved for future
# references.
#
# The shell script works only on all RCS files at one time.
# It is important that all changed files are checked in (there are
# no precautions against any error in this respect).
# file names:
# {RCS/}rcsfreeze.version for the version number
# {RCS/}rscfreeze.log for the log messages, most recent
# logmessage first.
progname=`basename $0`
DATE=`date`
# Check whether we have an RCS subdirectory, so we can have the right
# prefix for our paths.
if [ -d RCS ] ; then
RCSDIR=RCS
else
RCSDIR=.
fi
# Version number stuff, log message file
VERSIONFILE=$RCSDIR/.rcsfreeze.version
LOGFILE=$RCSDIR/.rcsfreeze.log
if [ ! -r $VERSIONFILE ] ; then
# Initialize, rcsfreeze never run before in the current directory
cat << EOF > $VERSIONFILE
0
EOF
touch $LOGFILE
fi
# Get Version number, increase it, write back to file.
VERSIONNUMBER=`cat $VERSIONFILE`
VERSIONNUMBER=`expr $VERSIONNUMBER + 1`
cat << EOF > $VERSIONFILE
$VERSIONNUMBER
EOF
# Symbolic Revision Number
SYMREV=C_$VERSIONNUMBER
# Allow the user to give a meaningful symbolic name to the revision.
SYMREVNAME=${1-$SYMREV}
echo "$progname: symbolic revision number computed: \"$SYMREV\""
echo "$progname: symbolic revision number used: \"$SYMREVNAME\""
echo "$progname: the two differ only when $progname invoked with argument"
# Stamp the logfile. Because we order the logfile the most recent
# first we will have to save everything right now in a temporary file.
TMPLOG=/tmp/rcsfreeze.$$.log.tmp
echo "Version: $SYMREVNAME($SYMREV), Date: $DATE" > $TMPLOG
echo "-----------" >> $TMPLOG
# Now ask for a log message, continously add to the log file
echo "$progname: give log message, summarizing changes"
echo " (terminate with ^D or single '.')"
while read MESS ; do
if [ "$MESS" = '.' ] ; then break ; fi
echo " $MESS" >> $TMPLOG
done
echo "-----------" >> $TMPLOG
echo >> $TMPLOG
# combine old and new logfiles
TMPLOG2=$TMPLOG.2
cat $TMPLOG $LOGFILE > $TMPLOG2
cp $TMPLOG2 $LOGFILE
rm -f $TMPLOG $TMPLOG2
# Now the real work begins by assigning a symbolic revision number
# to each rcs file. Take the most recent version of the main trunk.
for FILE in $RCSDIR/* ; do
# get the revision number of the most recent revision
REV=`rlog -h -d"$DATE" $FILE | fgrep 'head:' | awk ' { print $2 } ' `
echo "$progname: file name: \"$FILE\", Revision Number: $REV"
# assign symbolic name to it.
rcs -q -n$SYMREVNAME:$REV $FILE
done