1.
首先我们定义一下环境变量
export CVS_RSH=ssh
export CVSROOT=:ext:Eong@cvs.cosoft.org.cn:/sfroot/cvs/gentoochina
其中Eong是我的用户名,你应该替换成你自己的。
我们要进行翻译工作了,建一个目录,叫什么呢,就叫worktmp吧。
我们进到此目录下,执行命令cvs checkout cn,我们将会看到如下的信息: cvs checkout: Updating ......CVS在当前目录下建立一个叫做cn的目录,我们服务器上的文件都在这个目录下出现了,而且还多了一个名为CVS的目录。目录CVS下面存放的是一些文本文件,记录了CVSROOT的位置、此项目对应源码库中那个目录等一些信息。 保存修改到CVS中
2.
现在,我们开始艰苦卓越的翻译工作。经过数十分钟、数小时乃至数天的工作,我们基本完成了翻译,现在要告一段落了。我们将修改的内容提交给CVS。
于是,我们需要执行命令
cvs commit -m "Made some useful changes on some files"
这时,我们将会看到CVS给出一些提示信息,它扫描并比较此目录下的现有文件和它在源码库中保存的原有文件,做了修改的文件将被更新,并且有了新的版本号:1.2。-m参数如同前面所说,是为了不想它启动一个文本编辑器来让自己输入。如果我们仅是修改了其中一两个文件,我们可以在上面的命令的最后附上文件名,这样CVS只会比较、更新指定的文件。注意的是,和自己做备份不同,CVS只是保存了不同版本之间的差异,并没有完整的保存各个版本。现在,你是不是觉得CVS有点用处了。 3.5 添加文件到项目中
有一天,我们需要在原有的项目里添加两个文件:a.xml和b.xml。首先,我们在工作目录下建立并编辑、修改、生成了这两个文件,注意,一定是对应的工作目录,你也可以翻译好了再copy到工作目录相应位置。然后我们进入文件所在的目录,使用命令add命令来添加。
cvs add a.xml b.xml
此时,文件并没有真正的被添加,只是相当于"注册"了一下,要使这个过程生效,我们仍然需要使用commit命令:
cvs commit a.xml b.xml -m "Add two files"
此时,CVS将把这两个文件添加到项目中去,他们的版本均为初始的1.1。
3.从项目中删除文件
除了添加以外,我们有的时候可能需要删除某个文件,例如我们发现文件c.xml其实没有什么用。于是,我们执行下面几个命令来完成删除工作:
rm c.xml
/*删除本地文件*/
cvs remove c.xml
/*删除服务器上的文件*/
cvs commit c.xml -m "Delete a file."
/*确认删除×/
要注意的是,CVS只是删除了当前版本的c.xml,它以前的版本依然存在,除非它恰好仅有1.1版本。
4 设定特定版本号
经过一段时间的工作,程序已经初具规模,形成了较稳定的版本。这个时候,a.xml可能已经是5.4版本,而b.xml可能是3.5版本,而我们希望将当前的代码作一个版本发布。此时,我们需要使用的是tag命令。这个命令赋予指定的一个或多个文件一个给定的文本形式的版本号。版本号必须以字母开始,可以包含数字、下划线和连接符号(-)。我们想给当前项目的所有文件赋予相同的版本号时,可以不指定文件或路径参数,CVS默认选择当前目录下所有在CVS中注册的文件(循环进子目录)。
下面既是一个例子:
键入命令:
cvs tag release0-1
提示信息:
cvs tag: Tagging .
T Makefile
T a.xml
T b.xml
T c.xml
T d.xml
T e.xml
这样当前版本的所有文件都有了一个叫做release0-1的版本代号。当我们需要这个版本的时候,我们使用 -r (版本代号)参数来得到指定的版本。例如命令:
cvs checkout -r release0-1 gentoo
将在当前目录下建立gentoo目录,并导出所有版本代号为release0-1的文件。
5 更新当前工作目录中的文件
这里使用的命令为update,它将比较指定的在CVS源码库中的文件和当前目录下的文件,如果CVS源码库中有更高版本的源文件,则更新当前目录下的文件。这个功能主要是多人协作开发项目时使用的,让你及时分享同伴的工作成果。但它另外一个重要的用途,同样适用于单人开发的项目。这个用途需要使用- j参数,我们看下面的例子:
cvs update -j 1.5 -j 1.3 index.xml
这个命令的功能是,在当前目录的index.xml文件中,忽略从版本1.3到版本1.5所作的修改。毫无疑问,对个人来说,这是一个非常重要的功能。因为在某个阶段我们对程序所作的修改在现在可能会被视为是无效乃至错误的,这个功能很好的解决了这个问题。
在更新的过程中,CVS执行一个自动合并的过程。例如我们的工作目录中的test.c文件版本是2.1,并且我们已经对此文件作了一番修改,而 CVS源码库中的是版本2.2,此时我们执行update命令时,CVS并不是简单的将版本2.2覆盖版本2.1,而是试图将自版本2.1到版本2.2的修改添加到当前目录中的文件中去,如果它和我们刚刚所作的修改有冲突,则CVS会以字符串"<<<<<"和"> >>>>"表示由冲突发生,期待用户去修改。CVS拒绝接受包含有上述特定字符串的文件。下面即是一个冲突的例子: test.c: 版本号 2.2,保存在CVS中 …… getPartFile( ); showFinished(); return(A); } ……
test.c: 版本号2.1 经过我们的修改 …… getPartFile( ); return(B); } …… 我们执行命令cvs update test.c后,将会包含如下内容的新的test.c:
…… getPartFile( ); showFinished(); <<<<<<< test.c return(B); ========== return(A); >>>>>>> 2.2 } ……
除非我们做出修改并删去"<<<<<<<"、"======="和">>>> >>>",否则在执行cvs commit的时候,test.c 将不会更新原有的2.2版本。
5.CVS的其他功能 CVS当然远不止上面所说的这些内容,这些仅是CVS的基本功能,CVS还有许多重要的功能,如上面所说的网络工作方式、支持二进制文件等。
其它的我就不多说了。上面这些应该足够让大家懂得CVS的基本使用了。大家帮忙加快翻译速度吧,据wolf所说handbook翻译完成,就能在官方主页上有连接了。
英文原档这里有下载:www.gentoo.org/dyn/doc-snapshots/docs-latest-en.tar.bz2
CVS仓库地址:
http://cvs.cosoft.org.cn/cgi-bin/vi...cgi/gentoochina
翻译模块是cn,也就是根目录下的cn文件夹。
CVS服务器上没有的你可以加上去,有的你可以修改翻译。过时的文件可以删除,不过请慎重,毕竟是劳动成果。