CVS and a bad memory
I use CVS to provide revision management for the web site, but my
memory is so bad, I keep forgetting that I need to cvs add
new files to the repository before doing a cvs commit.
The cvs status file command will state if a file is
not in the repository (it has a status of Uknown), but the
output from cvs status is very verbose. Hence, I wrote a
small script to remind me which files I had yet to add to the
repository, cvschk.
I now find that writing this script was a waste of time, as its action can be better invoked by:
alias cvsnew "cvs -n -q update | grep '^\?' | sed -e 's/^\?//'"
Sigh. Here it is anyway...
#!/bin/sh
#
# NAME
# cvschk -- Identify unmanaged files in a CVS sandbox
#
# SYNOPSIS
# cvschk [directory]
#
# DESCRIPTION
# cvschk will perform a 'cvs status' on all the directory and files
# in the current working directory, if it is identified as a CVS
# sandbox (i.e. a CVS file exists at the top level).
#
# It will display a list of unknown (i.e. unmanaged) files on stdout.
#
# If the directory argument is provided, that is used instead of the
# current working directory.
#
# MODIFICATION HISTORY
# Mnemonic Rel Date Who
# cvschk 1.0 060304 mpw
dir=$PWD
SCRIPT=`basename $0`
if [ $# -eq 1 ]; then
if [ ! -d $1 ]; then
echo "${SCRIPT}: $1 is not a readable directory."
exit 2
else
dir=$1
cd $dir
fi
fi
if [ ! -r CVS ]; then
echo "${SCRIPT}: \"$dir\" does not appear to be a CVS sandbox."
exit 2
fi
exitstatus=0
filelist=`find . -type d -name CVS -prune -o -type f -print`
tmpfile="/tmp/cvs$$"
cvs status $filelist >/dev/null 2>$tmpfile
if [ -s $tmpfile ]; then
echo "The following files are not known by cvs:"
awk '/cvs add/ {print "\t",$NF; next} {print "CVS ERROR: " $0}' $tmpfile
exitstatus=1
fi
rm $tmpfile
exit $exitstatus