Next Previous Contents

3. 设定 CVS

首先,你需要安装 CVS 套件,在Redhat Linux 上请用


cd /mnt/cdrom/Redhat/RPMS
rpm -i rcs*.rpm
rpm -i cvs*.rpm
To see the list of files installed do -
rpm -qpl cvs*.rpm | less

然后用 j, k, CTRL+f, CTRL+D, CTRL+B, CTRL+U 或上下左右键, page up/down 浏览一下结果。 请用 'man less' 查看 less 的用法

在其他的 unix 机器上,你可能需要下载 RCS CVS 的 tar.gz 文档, 然后根据 README, INSTALL 档的指示来安装 CVS。 请到 http://www.cyclic.comhttp://www.loria.fr/~molli/cvs-index.html

3.1 CVS 的专有环境变数

下列的环境变数需要在 /etc/profile 档中设定,/etc/profile 是对所有使用者都有效的内定值设定档, 如果没有设定 /etc/profile,那么你应该加这些设定到你自己的设定档  /.bash_profile 内。


export EDITOR=/bin/vi
export CVSROOT=/home/cvsroot
export CVSREAD=yes

建造一个目录来存你源程序的储藏柜 (repository) 并且给予 unix group 与 user 读写的权力。 (译注:这个目录下将会有很多你将来的原始码。)


export CVSROOT=/home/cvsroot
mkdir $CVSROOT
chmod o-rwx $CVSROOT
chmod ug+rwx $CVSROOT

要初始化你的 CVS ,并且从现在开始把你的源程序交给 CVS 管理。请做 -
cvs init

(译注;这个初始化的动作在于建造一个储藏柜,是一个目录$CVSROOT/。
同时 $CVSROOT/CVSROOT 也在此时被建造,这个模块目录下面是控制你CVS的administration files,
里面的文档做一些修改后,可以使CVS更强大好用。
$CVSROOT 下的目录每个都是 module 的意思,一个 module 可以就是一个专案计划。
但也可能是你把一个计划拆成很多 module ,不同 module 交给不同的 team 去发展。)

# 一定要换到想要 CVS 控制的计划目录下喔
cd $HOME/my_source_code_dir

# 把整个目录纳入管理用 import 命令
cvs import my_source_code_dir V1_0 R1_0  

(译注:其实是 cd 到你的project下后,cvs import 模块 vendor_tag release_tag,
不一定要是目录名称 my_source_code_dir,vendor_tag, release_tag 只是识别用的东西,
将来你可以用 tag 来存取你要的特定版本
这个动作会在 $CVSROOT/ 下开个" 模块 "的目录,然后把 my_source_code_dir 整个放到 CVS 下管理,
$HOME/my_source_code_dir 就没用了。import 的动作是把已经写好的一堆 code 摆进来,
如果将来想新增文档xxxx.c,必须先写好xxxx.c,再用 cvs add xxxx.c)

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/$PROJECT'."
        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/$PROJECT'."
        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/$CVS"
                if find . -type f -print | cpio -pdmv "$CVSROOT/$CVS"
                then
                        :
                else
                        echo >&2 "`basename "$0"`: can't convert RCS subdirectory '$RCSROOT/$RCS' to CVS subdirectory '$CVSROOT/$CVS'."
                fi
        else
                echo >&2 "`basename "$0"`: can't change to RCS subdirectory '$RCSROOT/$RCS'."
        fi)
done

现在 RCS 已经被改成 CVS 系统下的 'project'. 你可以开始用CVS命令来存取 'project' 这个模块了.
Next Previous Contents