NOTE : Get the Korn shell /bin/ksh by installing pdksh*.rpm from the Linux contrib cdrom
Save this file as a text file and chmod a+rx on it.
#!/bin/ksh
# CVS program sdelete
# Program to delete the file from CVS
# Every filename is composed of 3 parts - Home directory, sub-directory
# and the filename. The full-path is $HOME/$subdir/$fname
# And in CVS the same directory structure is maintained (by
# variable $subdir) therefore in cvs we will have $CVSROOT/$subdir/$fname
# In this program these 4 variables $HOME, $CVSROOT, $subdir and $fname
# play an important role. For example, sample values can be like
# HOME=/home/aldev, subdir=myproject/src CVSROOT=/home/cvsroot
# and fname=foo.cpp
# Caution: Put double-quotes to protect the variables having
# spaces, like "$HOME/$subdir" if subdir is 'some foo.cpp'
cmdname=`basename $0`
if [ $# -lt 1 ]; then
print "\nUsage: $cmdname <filename> \n"
exit
fi
onearg="$1"
homedir=` echo $HOME | cut -f1 -d' ' `
if [ "$homedir" = "" ]; then
print "\nError: \$HOME is not set!!\n"
exit
fi
cur_dir=`pwd`
len=${#homedir}
len=$(($len + 2))
subdir=` echo $cur_dir | cut -b $len-2000 `
#echo "subdir is : " $subdir
tmpaa=`dirname "$onearg" `
if [ "$tmpaa" = "." ]; then
fname="$onearg"
if [ "$subdir" = "" ]; then
subdir=$tmpaa
fi
else
fname=`basename "$onearg" `
if [ "$subdir" = "" ]; then
subdir=$tmpaa
else
subdir="$subdir/$tmpaa"
fi
fi
#echo "subdir is : " $subdir
#echo "fname is : " $fname
# CVS directory in your local directory is required for all commands..
if [ ! -d "$homedir/$subdir/CVS" ]; then
#tmpaa=` (cd "$CVSROOT/$subdir"; find * -prune -type f -print | head -1 ) `
tmpaa=` (cd "$CVSROOT/$subdir"; find * -maxdepth 0 -type f -print | head -1 ) `
tmpbb=`basename $tmpaa | cut -d',' -f1 `
if [ "$tmpaa" = "" -o ! -f "$CVSROOT/$subdir/$tmpbb,v" ]; then
print "\nThe directory $homedir/$subdir/CVS does not exist"
print "You must do a sget on `basename $subdir` directory. Give -"
print " cd $homedir/`dirname $subdir` "
print " sget `basename $subdir` "
exit
else
# Now try to create CVS in local dir by sget
(
cd "$homedir"
if [ "$subdir" = "." ]; then # don't use dot, will mess up cvs
cvs -r checkout -A $tmpbb
else
cvs -r checkout -A "$subdir/$tmpbb"
fi
)
fi
fi
# Operate inside a sub-shell ...
(
cd $homedir
# Check if file does not exist....
if [ ! -f "$subdir/$fname" ]; then
# Try to get the file from CVS
sget "$subdir/$fname"
if [ ! -f "$subdir/$fname" ]; then
print "\nError: $subdir/$fname does NOT exist in CVS repository."
print "\nAborting $cmdname ......"
exit
fi
fi
bkextn=cvs_sdelete_safety_backup
\mv -f "$subdir/$fname" "$subdir/$fname.$bkextn"
cvs remove "$subdir/$fname"
print "\nsdelete command removes the file from CVS repository"
print "and archives the file in CVS Attic directory. In case"
print "you need this file in future then contact your CVS administrator"
print " "
print "\nDone $cmdname. $cmdname successful"
print "Run scommit on $homedir/$subdir/$fname to"
print "make this change permanent"
\mv -f "$subdir/$fname.$bkextn" "$subdir/$fname"
)