博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CVS-RCS(2)(转)
阅读量:2451 次
发布时间:2019-05-10

本文共 5396 字,大约阅读时间需要 17 分钟。

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

3.2 从 RCS 转换到 CVS 系统

要转换已经存在的 RCS 档案到 CVS ,请使用下面的 script 。并确定你从你的

Linux CD-ROM 安装了 korn shell 套件 pdksh*.rpm。

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

_________________________________________________________________

#!/bin/ksh

#############################################################

# Program to Migrate the existing source code in RCS to CVS

#

# Needs the korn shell RPM package pdksh*.rpm from Linux

# contrib cdrom

#############################################################

#

# rcs2cvs - convert source tree from RCS to CVS

#

# project to convert

PROJECT='project'

# current RCS root

RCSROOT="$HOME/rcs"

if cd "$RCSROOT/$PROJECT"

then

cd "$RCSROOT"

else

echo >&2 "`basename "$0"`: can't change to RCS directory '$RCSROOT/$PRO

JECT'."

exit 1

fi

# current CVS root

CVSROOT="$HOME/cvs"

# create new CVS directory for project 'project'

if mkdir "$CVSROOT/$PROJECT"

then

:

else

echo >&2 "`basename "$0"`: can't create CVS directory '$CVSROOT/$PROJEC

T'."

exit 2

fi

# create CVS project tree from RCS tree

find "$PROJECT" -type d -name RCS -print |

while read RCS

do

CVS="`dirname "$RCS"`"

(if cd "$RCS"

then

# if find . -type f -name '*,v' -print | cpio -pdmv "$CVSROOT/$CV

S"

if find . -type f -print | cpio -pdmv "$CVSROOT/$CVS"

then

:

else

echo >&2 "`basename "$0"`: can't convert RCS subdirecto

ry '$RCSROOT/$RCS' to CVS subdirectory '$CVSROOT/$CVS'."

fi

else

echo >&2 "`basename "$0"`: can't change to RCS subdirectory '$R

CSROOT/$RCS'."

fi)

done

_________________________________________________________________

现在 RCS 已经被改成 CVS 系统下的 'project'. 你可以开始用CVS命令来存取

'project' 这个模组了.

4. Shell Scripts

下面的 scripts 是基本 CVS 命令的集合,而且是 Korn shell 的 scripts 。你

可以把他转成 perl 或者 bash。你可以自己修改成你想要的样子。 这些只是运

用基本 CVS 命令但有些特殊的花样加在里面。例如, sedit 这个 script 提供

了档案锁住的功能使得其他人知道有某人正在修改这个档案, 当然你也可以直接

使用 CVS 命令而不用这些 scripts ,这些 scripts 只是在展示 CVS 是多麽的

有弹性。

把这些 scripts 复制到 /usr/local/bin 下,并且此目录应该在你的 PATH 环境

变数中。

1. sget [-r revision_number] 要从 CVS 获得一个唯

读档案或整个唯读目录, 请按 [9]sget

2. sedit [-r revision_number] 要修改一个一个程式码时,这个

scripts 会做档案锁住的动作,因此没有别人可以登出这个档案了。当然你

可以改变这个 script 成你想要的功能 - 例如不锁住,只出现警告讯息,或

者相反的,非常严谨的锁档案。 请按 [10]sedit

3. scommit [-r revision_number] 要交出某个你修改的档案或整

个目录。 把你的改变交给 CVS。 请按 [11]scommit

4. supdate 要藉由从 CVS 得到最新的档案来update 一

个档案或整个目录。 请按 [12]supdate

5. sunlock [-r revision_number] 要把因为用 sedit 後的档案锁

关掉。这会释放档案锁(Release File Lock)。 请按 [13]sunlock

6. slist 要看目前正被你修改的档案列表。 做 'ls -l | grep | ...' 命令,

请按 [14]slist

7. sinfo 要得到一个档案的改版资讯。 请按

[15]sinfo

8. slog 要得到一个 CVS 档案改版的历史纪录, 请按 [16]slog

9. sdif

sdif -r rev1 -r rev2 要得到你的档案与 CVS 柜子里的档案不

同的地方在哪里。 请按 [17]sdif

注意: sdif 只有一个 'f' ,因为这里已经有一个 unix 命令叫 'sdiff'。

10. sadd 要新增一个档案到 CVS 柜子里。 请按 [18]sadd

11. sdelete 要从 CVS 柜子里清掉一个档案。 请按 [19]sdelete

12. sfreeze 要冻结原始码 (freeze

codes) ,这是将要发行 (release) 整个原始码目录树。 请按

[20]sfreeze

13. saddtree 要新增一个目录树到 CVS 。

请按 [21]saddtree

例如 :

_____________________________________________________________

cd $HOME;

sfreeze REVISION_1_0 srctree

_____________________________________________________________

这将会冻结原始码,并贴上一个标签 REVISION_1_0 ,如此一来你就可以稍

後用版本名字登出整个目录树。

******************************************************

4.1 sget

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

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

_________________________________________________________________

#!/bin/ksh

# CVS program sget

# Program to check out the file from CVS read-only

cmdname=`basename $0`

Usage()

{

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

irectory name> "

print "The options -r are optional "

print "For example - "

print " $cmdname -r 1.1 foo.cpp"

print " $cmdname foo.cpp "

print " $cmdname some_directory "

print "Extract by symbolic revision tag like - "

print " $cmdname -r REVISION_1 some_directory "

print " "

exit

}

# 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

fi

bkextn=sget_bak

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

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

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

exit

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 " Error: The file is writable. Aborting $cmdname ......"

print " You should either backup, scommit or delete the f

ile and"

print " try $cmdname again "

exit

fi

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

# Move the file

touch $1 2>/dev/null

mv -f $1 $1.$bkextn

# Create subshell

(

cd $hme

#echo $fdname

# Use -A option to clear all sticky flags

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

cvs -r checkout -A $fdname

else

cvs -r checkout -A -$FLAG1 $OARG1 $fdname

fi

)

#pwd

if [ -f $1 ]; then

print " READ-ONLY copy of the file $fdname obtained."

print "Done $cmdname"

#print " Tip (Usage): $cmdname "

fi

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

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

你可能感兴趣的文章
ipad 悬浮按钮 自定_如何在iPad上自定义鼠标按钮
查看>>
在Redhat Linux机器上更改主机名
查看>>
如何删除Trovi /管道/搜索保护浏览器劫持恶意软件
查看>>
mekko 教程_Power BI桌面Mekko图表
查看>>
SQL Server数据库快照
查看>>
activiti 功能概述_子串功能概述
查看>>
索引sql server_维护SQL Server索引
查看>>
sql rank_SQL RANK功能概述
查看>>
ssis组件_SSIS脚本组件概述
查看>>
sql 触发器嵌套条件_SQL Server中的嵌套触发器
查看>>
SQL Server中的数据库快照
查看>>
power bi 背景图_Power BI桌面饼图树
查看>>
sql组合索引和独立索引_SQL索引概述和策略
查看>>
SQL Server执行计划面试问题
查看>>
json 转对象函数_JSON_QUERY()函数从JSON数据提取对象
查看>>
将PowerShell连接到SQL Server –使用其他帐户
查看>>
使用云SQL Server数据库备份和还原操作
查看>>
SQL Server Management Studio(SSMS)中的自定义键盘快捷方式
查看>>
将SQL Server数据库备份到多个文件或从多个文件还原
查看>>
比较和同步两个SQL Server数据库之间的图像
查看>>