• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    CVS-RCS(3)

    發布: 2007-6-21 12:06 | 作者:   | 來源:   | 查看: 18次 | 進入軟件測試論壇討論

    領測軟件測試網

       
      4.2 sedit

    注意 : Korn shell /bin/ksh 在你從Linux CD-ROM 安裝 pdksh*.rpm 時就會產


    請把他存成一般文字檔并改變存取權限 chmod a+rx
    _________________________________________________________________

    #!/bin/ksh
    # CVS program sedit
    # Program to check out the file from CVS read/write mode with locking

    cmdname=`basename $0`

    Usage()
    {
    # print "\nUsage: $cmdname [-r revision_number] [-F] "
    # print "The options -r, -F are optional "
    # print "The option -F is FORCE edit even if file is "
    # print "locked by another developer"

    print "\nUsage: $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 " $cmdname -F foo.cpp "
    print " "
    }

    # Command getopt will not supported in next major release.
    # Use getopts instead.
    #while getopts r:F ii
    while getopts r: ii
    do
    case $ii in
    r) FLAG1=$ii; OARG1="$OPTARG";;
    # F) FLAG2=$ii; OARG2="$OPTARG";;
    ?) Usage; exit 2;;
    esac
    done
    shift ` expr $OPTIND - 1 `

    #echo FLAG1 = $FLAG1 , OARG1 = $OARG1

    if [ $# -lt 1 ]; then
    Usage
    exit
    fi

    hme=` echo $HOME | cut -f1 -d' ' `
    if [ "$hme" = "" ]; then
    print "\nError: \$HOME is not set!!\n"
    exit
    fi

    bkextn=sedit_bak

    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 developer....
    cvs_root=` echo $CVSROOT | cut -f1 -d' ' `
    if [ "$cvs_root" = "" ]; then
    print "\nError: \$CVSROOT is not set!!\n"
    exit
    fi
    cldir=$CVSROOT/$subdir/Locks
    mkdir $cldir 2>/dev/null
    rcsfile=$CVSROOT/$subdir/$1,v
    #echo $rcsfile

    if [ ! -e $rcsfile ]; then
    print "\nError: File $1 does not exist in CVS repository!!\n"
    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
    \rm -f $tmpfile 2>/dev/null
    if [ "$FLAG1" = "" ]; then
    (
    cd $hme
    cvs log $fdname | head -6 | grep head: | awk '{print $2}' > $tmpfile
    )
    OARG1=`cat $tmpfile`
    \rm -f $tmpfile 2>/dev/null
    fi

    lockfile=$cldir/$1-$OARG1
    #if [ -e $lockfile -a "$FLAG2" = "" ]; then
    if [ -e $lockfile ]; then
    print "\nError: File $1 Revision $OARG1 already locked by another devel
    oper !!"
    aa=` ls -l $lockfile | awk '{print "Locking developers unix login name
    is = " $3}' `
    print $aa
    print "That developer should do scommit OR sunlock to release the lock"
    print " "
    # print "You can also use -F option to force edit the file even if"
    # print "the file is locked by another developer. But you must talk to"
    # print "other developer to work concurrently on this file."
    # print "For example - this option is useful if you work on a seperate"
    # print "C++ function in the file which does not interfere with other"
    # print "developer."
    # print " "
    exit
    fi

    # Get read-only copy now....
    if [ ! -e $1 ]; then
    (
    cd $hme
    cvs -r checkout $fdname 1>/dev/null
    )
    fi

    # Check if file already exists....
    if [ -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
    print "\nError: The file is writable. Aborting $cmdname ......"
    print " You must backup, scommit or delete file and"
    print " try $cmdname again\n"
    exit
    fi
    #print "\nNote: The file $1 is read-only."
    #print "Hence I am moving it to $1.$bkextn ....\n"
    \mv -f $1 $1.$bkextn
    chmod 444 $1.$bkextn
    elif [ -d $1 ]; then
    print "\nError: $1 is a directory and NOT a file. Aborting $cmdname ...
    .\n"
    exit
    fi

    # Create subshell
    print "\nNow getting the file $1 from CVS repository ...\n"
    (
    cd $hme
    #echo $fdname
    # Use -A option to clear the sticky tag and to get
    # the HEAD revision version
    if [ "$FLAG1" = "" ]; then
    cvs -w checkout -A $fdname
    else
    cvs -w checkout -A -$FLAG1 $OARG1 $fdname
    fi
    )

    if [ -e $1 ]; then
    touch $lockfile
    fi

    #pwd

    print "\nDone $cmdname"
    #print "\nTip (Usage): $cmdname \n"

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>