用户管理  |   用户注册                                                                                    首 页软件下载教程中心办公指南flash动画文档下载办公公文

www.4oa.com - 中科软件园

投递文章 用户管理 投稿指南 资讯通告 :
站内搜索: 您的位置中科软件园 > 教程中心 > 操作系统 > Linux > 软件使用 > 教程内容

CVS-RCS(二)

2005-5-21 17:37:55  来源:本站整理  作者:不详 【 投递文章
内容提要:3.2从RCS转换到CVS系统要转换已经存在的RCS档案到CVS,请使用下面的script。并确定你从你的LinuxCD-ROM安装了kornshell套件pdksh*.rpm。注意:Korn...
3.2 从 RCS 转换到 CVS 系统
要转换已经存在的 RCS 档案到 CVS ,请使用下面的 s cript 。并确定你从你的 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 s cripts

下面的 s cripts 是基本 CVS 命令的集合,而且是 Korn shell 的 s cripts 。你 可以把他转成 perl 或者 bash。你可以自己修改成你想要的样子。 这些只是运 用基本 CVS 命令但有些特殊的花样加在里面。例如, sedit 这个 s cript 提供了档案锁住的功能使得其他人知道有某人正在修改这个档案, 当然你也可以直接 使用 CVS 命令而不用这些 s cripts ,这些 s cripts 只是在展示 CVS 是多麽的
有弹性。

把这些 s cripts 复制到 /usr/local/bin 下,并且此目录应该在你的 PATH 环境 变数中。
1. sget [-r revision_number] 要从 CVS 获得一个唯 读档案或整个唯读目录, 请按 [9]sget
2. sedit [-r revision_number] 要修改一个一个程式码时,这个 s cripts 会做档案锁住的动作,因此没有别人可以登出这个档案了。当然你 可以改变这个 s cript 成你想要的功能 - 例如不锁住,只出现警告讯息,或 者相反的,非常严谨的锁档案。 请按 [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 "\nUsage: $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 [ $#

[1] [2]  下一页

(评论内容只代表网友观点,与本站立场无关!)[ 全部评论 ]

网友评论:

    用户名:

    评   分:100分 85分 70分 55分 40分 25分 10分 0分

    内 容:

                 (注“”为必填内容。) 验证码: 验证码,看不清楚?请点击刷新验证码

关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站地图 -有事点这里