首先,你需要安装 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
在其他的 unix 机器上,你可能需要下载 RCS CVS 的 tar.gz 文档, 然后根据 README, INSTALL 档的指示来安装 CVS。 请到 http://www.cyclic.com 和 http://www.loria.fr/~molli/cvs-index.html
下列的环境变数需要在 /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 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)
要转换已经存在的 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