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" )