4.4 supdate
注意 : Korn shell /bin/ksh 在你從Linux CD-ROM 安裝 pdksh*.rpm 時會產(chǎn)生
請把他存成一般文字檔并改變存取權限 chmod a+rx
--------------------------------------------------------------------------------
#!/bin/ksh
# CVS program supdate
# Program to update the file from CVS read/write mode
cmdname=`basename $0`
if [ $# -lt 1 ]; then
print " Usage: $cmdname "
exit
fi
# Check if file already exists....
if [ $# -gt 0 -a -f $1 ]; then
user_perms=" "
group_perms=" "
other_perms=" "
user_perms=`ls -l $1 | awk '{print $1 }' | cut -b3-3 `
group_perms=`ls -l $1 | awk '{print $1 }' | cut -b6-6 `
other_perms=`ls -l $1 | awk '{print $1 }' | cut -b9-9 `
if [ "$user_perms" = "w" -o "$group_perms" = "w"
-o "$other_perms" = "w" ]; then
while :
do
print " $cmdname will backup your working file "
print "$1 to $1.supdate_bak before doing any merges."
print "Are you sure you want the merge the changes from"
print -n "CVS repository to your working file ? [n]: "
read ans
if [ "$ans" = "y" -o "$ans" = "Y" ]; then
if [ -f $1.supdate_bak ]; then
print " Warning : File $1.supdate_bak already exists!!"
print "Please examine the file $1.supdate_bak and delete it"
print "and than re-try this $cmdname "
print "Aborting $cmdname ...."
exit
else
cp $1 $1.supdate_bak
break
fi
elif [ "$ans" = "n" -o "$ans" = "N" -o "$ans" = "" -o "$ans" = " " ]; then
exit
fi
done
fi
fi
if [ -d $1 ]; then
print " Directory update is disabled as cvs update"
print "merges the changes from repository to your working directory"
print "So give the filename to update - as shown below: "
print " Usage: $cmdname "
exit
# cvs update
else
cvs update $1
fi
print " Done $cmdname. $cmdname successful"
#print " Tip (Usage): $cmdname "
--------------------------------------------------------------------------------
4.5 sunlock
注意 : Korn shell /bin/ksh 在你從Linux CD-ROM 安裝 pdksh*.rpm 時會產(chǎn)生
請把他存成一般文字檔并改變存取權限 chmod a+rx.
--------------------------------------------------------------------------------
#!/bin/ksh
# CVS program sunlock
# Program to unlock the file to release the lock done by sedit
cmdname=`basename $0`
Usage()
{
print " Usage: $cmdname [-r revision_number] "
print " The options -r is optional "
print "For example - "
print " $cmdname -r 1.1 foo.cpp"
print " $cmdname foo.cpp "
print " "
}
# Command getopt will not supported in next major release.
# Use getopts instead.
while getopts r: ii
do
case $ii in
r) FLAG1=$ii; OARG1="$OPTARG";;
?) Usage; exit 2;;
esac
done
shift ` expr $OPTIND - 1 `
if [ $# -lt 1 ]; then
Usage
exit
fi
hme=` echo $HOME | cut -f1 -d' ' `
if [ "$hme" = "" ]; then
print " Error: $HOME is not set!! "
exit
fi
cur_dir=`pwd`
#echo $cur_dir
len=${#hme}
len=$(($len + 2))
#echo $len
subdir=` echo $cur_dir | cut -b $len-2000 `
#echo $subdir
if [ "$subdir" = "" ]; then
fdname=$1
else
fdname=$subdir"/"$1
fi
# If file is already checked out by another user....
cvs_root=` echo $CVSROOT | cut -f1 -d' ' `
if [ "$cvs_root" = "" ]; then
print " Error: $CVSROOT is not set!! "
exit
fi
cldir=$CVSROOT/$subdir/Locks
rcsfile=$CVSROOT/$subdir/$1,v
#echo $rcsfile
if [ ! -e $rcsfile ]; then
print " Error: File $1 does not exist in CVS repository!! "
exit
fi
# Get the tip revision number of the file....
# Use tmpfile as the arg cannot be set inside the sub-shell
tmpfile=$hme/sedit-lock.tmp
m -f $tmpfile 2>/dev/null
if [ "$FLAG1" = "" ]; then
(
cd $hme
cvs log $fdname | head -6 | grep head: | awk '{print $2}' > $tmpfile
)
OARG1=`cat $tmpfile`
m -f $tmpfile 2>/dev/null
fi
lockfile=$cldir/$1-$OARG1
#echo lockfile is : $lockfile
if [ ! -e $lockfile ]; then
print " File $1 revision $OARG1 is NOT locked by anyone"
print " "
exit
fi
ans=""
while :
do
print " ***************************************************"
print "WARNING: $cmdname will release lock and enable other"
print " developers to edit the file. It is advisable"
print " to save your changes with scommit command"
print "***************************************************"
print -n " Are you sure you want to unlock the file ? [n]: "
read ans
if [ "$ans" = "" -o "$ans" = " " -o "$ans" = "n" -o "$ans" = "N" ]; then
print " Aborting $cmdname ...."
exit
fi
if [ "$ans" = "y" -o "$ans" = "Y" ]; then
print " "
print "CAUTION: You may lose all the changes made to file!!"
print -n "Do you really want to unlock the file ? [n]: "
read ans
if [ "$ans" = "y" -o "$ans" = "Y" ]; then
break
else
exit
fi
else
print " Wrong entry. Try again..."
sleep 1
fi
done
if [ -e $lockfile ]; then
m -f $lockfile
print " Done $cmdname"
else
print " File $1 is NOT locked by anyone"
print " "
fi
--------------------------------------------------------------------------------
4.6 slist
注意 : Korn shell /bin/ksh 在你從Linux CD-ROM 安裝 pdksh*.rpm 時會產(chǎn)生
請把他存成一般文字檔并改變存取權限 chmod a+rx
--------------------------------------------------------------------------------
#!/bin/ksh
# CVS program slist
# Program to list all edited source files from CVS
#cmdname=`basename $0`
#echo "no of params : " $#
#echo "all args : " $@
recurse_flag=""
if [ "$1" = "" ]; then
dir=.
recurse_flag=""
else
dir=$@
recurse_flag=" -prune "
fi
FOUT=slist_temporary_file.out
m -f $FOUT
find $dir $recurse_flag -type f -exec ls -ltr {} ;
| grep -v "/CVS/"
| grep ^-rw
| grep -v .o
| grep -v .log
| grep -v .out
| grep -v .pit
| awk '{ if ($NF != "tags") print $0 }'
| awk '{ if ($NF != "a.out") print $0 }'
| awk '{ if ($NF != "core") print $0 }'
| awk '{ print $NF }' > $FOUT
aa=`cat $FOUT`
m -f $FOUT
for ii in $aa ; do
ftype=" "
ftype=`file $ii | awk '{print $2 }' `
# find . -type f -exec file {} ;
# 1)ELF 2)commands 3)[nt]roff, 4)c 5)English 6)executable
# 7)ascii 8)current 9)empty
# Binaries are ELF, lib.a are current
#
if [ "$ftype" = "ascii" -o "$ftype" = "commands"
-o "$ftype" = "[nt]roff," -o "$ftype" = "c" -o "$ftype" = "data"
-o "$ftype" = "English" -o "$ftype" = "executable" ]; then
pcfile=` echo $ii | cut -d'.' -f1`
pcfile=${pcfile}".pc"
if [ ! -f $pcfile ]; then
ls -l $ii
else
if [ "$ii" = "$pcfile" ]; then
ls -l $ii
fi
fi
fi
done;
#| grep -v ^-rwx
#ls -l | grep ^-rw | grep -v .o
#ls -l | grep ^-rw | grep -v .o | awk '{ if ($NF != "tags") print $0 }'
#ls -l | grep ^-rw | grep -v ^-rwx | grep -v .o | awk '{ if ($NF != "tags") print $0 }' | awk '{ if ($NF != "core") print $0 }'
#print " Done $cmdname. $cmdname successful"
#print " Tip (Usage): $cmdname "
--------------------------------------------------------------------------------