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 下的目录每个都是 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 只是识别用的东西,
这个动作会在 $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。, 跑完 script 後,把得到的目录移到$CVSROOT/some_project_name。

注意 : 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
#############################################################

# Enter your current RCS file location here.
RCS_DIRECTORY=/usr/home/my_rcs_tree

# Temporary directory to hold the files
TMP_RCS_DIR=$HOME/tmp_rcs_directory

mkdir $TMP_RCS_DIR

# Copy the tree having RCS directory into temporary directory
cd $RCS_DIRECTORY
tar cvf -  ` find . -name RCS -print ` | ( cd $TMP_RCS_DIR; tar -xvf - )

cd $TMP_RCS_DIR

for ii in `find . -type f -print` ; 
do 
        # $ii will have like /home/foo/RCS/sample.c,v
        echo $ii

        # Get the dir name like /home/foo/RCS from ii
        kk=`dirname $ii`
        # echo $kk

        # Drop off RCS from kk - like /home/foo
        jj=`dirname $kk`
        #       echo $jj

        # Move file from RCS to upper leve like
        # mv /home/foo/RCS/sample.c,v  /home/foo
        mv $ii $jj
done

# Remove the empty directory RCS like -
# rmdir /home/foo/RCS
cd $TMP_RCS_DIR
find  . -type d -name RCS -exec rmdir {} \;

# The resultant directory is $TMP_RCS_DIR (which is $HOME/tmp_rcs_directory)
# Move the directory tmp_rcs_directory to $CVSROOT/some_project_name
# Now the RCS is migrated to CVS as 'some_project_name' .

产生的结果是 $TMP_RCS_DIR (就是 $HOME/tmp_rcs_directory), 把tmp_rcs_directory这个目录移到 $CVSROOT/some_project_name, 现在 RCS 已经移到 CVS 系统下的 'some_project_name' 。您可以开始用 CVS 命令, 来存取 'some_project_name' 这个模组 (module) 了。


Next Previous Contents