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 sadd # Program to add the file to 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/directory> \n" exit fi onearg="$1" if [ ! -f "$onearg" -a ! -d "$onearg" ]; then print "\nArgument $onearg is not a file or a directory!" print "Usage: $cmdname <filename/directory> \n" exit fi # Argument is a directory name ..... homedir=` echo $HOME | cut -f1 -d' ' ` if [ "$homedir" = "" ]; then print "\nError: \$HOME is not set!!\n" exit fi cvs_root=` echo $CVSROOT | cut -f1 -d' ' ` if [ "$cvs_root" = "" ]; then print "\nError: \$CVSROOT 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 # Check if file exists .... if [ $# -eq 1 ]; then if [ -f "$onearg" ]; then cvs add "$onearg" exit fi elif [ $# -gt 1 ]; then print "\n\n\nAdding all the files in the current directory to CVS" print "Directories will not be added" print -n "Hit return to continue or CTRL+C to abort..." read ans for ii in $@ do if [ -f "$ii" ]; then cvs add "$ii" fi done; exit fi # When $subdir is "." then you are at the root directory if [ "$subdir" = "." ]; then # The $onearg is a directory and not a file at this point... if [ -d "$CVSROOT/$onearg" ]; then print "\nDirectory $onearg already exists in CVSROOT" exit else # You are adding at root directory $CVSROOT if [ "$2" = "" -o "$3" = "" ]; then print "\nUsage: $cmdname <directory> <vendor tag> <release tag>" print "For example - " print " $cmdname foo_directory V_1_0 R_1_0" exit else ( cd "$homedir/$subdir"; cvs import "$onearg" $2 $3 ) fi fi else # If current directory exists in CVS... if [ -d "$CVSROOT/$subdir/$onearg" ]; then print "\nDirectory $onearg already in CVS repository!" exit else ( if [ -d "$homedir/$subdir/$onearg/CVS" ]; then print "\nError: Directory $homedir/$subdir/$onearg/CVS exists!!" print "\nAborting now ...." exit fi # For import you MUST change to target directory # and you MUST specify full-path starting with $subdir cd "$homedir/$subdir/$onearg"; cvs import "$subdir/$onearg" Ver_1 Rel_1 ) fi fi