386BSD 0.1 development
authorWilliam F. Jolitz <wjolitz@soda.berkeley.edu>
Wed, 16 Aug 1989 04:38:46 +0000 (20:38 -0800)
committerWilliam F. Jolitz <wjolitz@soda.berkeley.edu>
Wed, 16 Aug 1989 04:38:46 +0000 (20:38 -0800)
Work on file usr/src/usr.bin/rcs/src/rcsfreeze.sh

Co-Authored-By: Lynne Greer Jolitz <ljolitz@cardio.ucsf.edu>
Synthesized-from: 386BSD-0.1

usr/src/usr.bin/rcs/src/rcsfreeze.sh [new file with mode: 0644]

diff --git a/usr/src/usr.bin/rcs/src/rcsfreeze.sh b/usr/src/usr.bin/rcs/src/rcsfreeze.sh
new file mode 100644 (file)
index 0000000..b761806
--- /dev/null
@@ -0,0 +1,94 @@
+#! /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