CVS-RCS(4)(转)

CVS-RCS(4)(转)[@more@]

4.3 scommit

注意 : Korn shell /bin/ksh 在你从Linux CD-ROM 安装 pdksh*.rpm 时就会产

请把他存成一般文字档并改变存取权限 chmod a+rx

_________________________________________________________________

#!/bin/ksh

# CVS program scommit

# Program to commit the changes and check in the file into CVS

cmdname=`basename $0`

Usage()

{

print " Usage: $cmdname [-r revision_number] "

print "The options -r are 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 `

#echo FLAG1 = $FLAG1 , OARG1 = $OARG1

if [ $# -lt 1 ]; then

Usage

exit 2

fi

if [ -d $1 ]; then

Usage

exit 2

fi

hme=` echo $HOME | cut -f1 -d' ' `

if [ "$hme" = "" ]; then

print " Error: $HOME is not set!! "

exit

fi

# Find sub-directory

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

mkdir $cldir 2>/dev/null

# Get the working 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 status $fdname 2>/dev/null | grep "Working revision:" | awk '{print

$3}' >$tmpfile

)

OARG1=`cat $tmpfile`

m -f $tmpfile 2>/dev/null

fi

if [ "$OARG1" = "" ]; then

print "The file $fdname is NEW, it is not in the CVS repository"

else

lockfile=$cldir/$1-$OARG1

if [ -e $lockfile ]; then

# Check if this revision is owned by you...

aa=` ls -l $lockfile | awk '{print $3}' `

userid=`id | cut -d'(' -f2 | cut -d')' -f1 `

if [ "$aa" != "$userid" ]; then

print " "

print "The file $fdname is NOT locked by you!!"

print "It is locked by unix user name $aa and your logi

n name is $userid"

# print "If you are working concurrently with other devel

oper"

# print "and you used -F option with sedit."

print "You need to wait untill other developer does sco

mmit"

print "or sunlock"

print "Aborting the $cmdname ...."

print " "

exit 2

fi

else

if [ -f $CVSROOT/$subdir/$1,v ]; then

print "You did not lock the file $fdname with sedit!!"

print "Aborting the $cmdname ...."

exit 2

else

print " The file $fdname does not exist in CVS reposit

ory yet!!"

print "You should have done sadd on $fdname ...."

fi

fi

fi

if [ -d $1 ]; then

Usage

exit 2

# Do not allow directory commits for now ...

#cvs commit

else

cvs commit $1

exit_status=$?

fi

if [ $exit_status -eq 0 ]; then

print " Done $cmdname. $cmdname successful"

#print " Tip (Usage): $cmdname "

fi

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8225414/viewspace-945076/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/8225414/viewspace-945076/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值