TortoiseCVS 简明流程实例
http://www.redsaga.com/CVS_newbie_win32/TortoiseCVS.htmlTortoiseCVS是cvsgui的产品之一。本文使用0.43版本,请至www.cvsgui.org下载新版本。
目录
本文的三个主要章节分别描述不同的操作步骤。如果您开创一个project,您需要对三个章节都明了,但是大多数人只是在已经创建的module中工作,这样的话您只需要先了解如何从CVS得到拷贝,然后是如何用CVS来管理您的每一点修改。
和名字中的含义一样,TortoiseCVS的产品形象是一只....乌龟 .. :)

首先介绍一下我们的环境。假设在一台地址为61.155.107.187
的机器上运行CVSNT服务器,client通过 pserver
协议连接到server。用户名为cao
。
假设我们现在工作于一个名为ProjectX的项目中,该项目包括1个readme.txt文件,两个jsp文件以及1个java文件。以下是它的目录结构。

假设您是工程管理员,您必须先开创这个项目。假设本地工作目录是d:\works\sandbox,并且这个工程已经由您完成了初步框架。首先,我们需要把这个工程加入到CVS控制之下。本地的一个project对应于server上面的一个Module,我们需要新建一个module。

然后告诉TortoiseCVS关于repository的位置。

这儿Module名字就是本地文件夹的名字。
第一次连接server,需要登录。

第一次输入口令之后,你的口令将会被保存在一个.cvspass的文件中。这个文件位于你的'home'目录,默认为\$WINDIR$\Document and Settings\$UserName$\。如果你同时使用TortoiseCVS和WinCVS,假若发生登录错乱,请删除这个.cvspass文件。
如果一切顺利,出现以下的log画面。

祝贺!您已经成功的在Server上建立了一个新的module。
但是您还没有加入任何文件。现在在您的explorer窗口中您将会看到一个新的CVS文件夹已经被创建,但是projectX的文件都显示一个问号。您现在需要把所有的文件夹先在server上建立。选择除CVS控制文件夹之外的其他文件夹,然后选择CVS Add All Recursively.

在一切正常的情况下,出现如下的log。

请注意看log信息。您已经通知server增加几个文件,包括\javasource\test\projectX\Calculator.java和\web下的两个jsp文件,但是您还没有提交。您需要提交他们才能真正的完成加入的过程。
现在我们先来加入最外层目录下的readme.txt文件。

和刚才一样,log告知您已经声明加入该文件,但是需要提交。您可以注意到,现在readme.txt处于红色之中,TortoiseCVS提示您红色的文件需要提交。选择CVS Commit.

请注意看log信息。现在您的readme.txt文件有了一个初始版本号1.1。

这时候您如果进入子文件夹,您会发现刚才cvs提示您需要提交的文件也处于红色。

如法炮制,commit之后您终于看到所有的文件都变成了绿色。

祝贺您!您现在把您的整个工程都置于CVS管理之下,并且每个文件都有了一个初始版本号1.1。
创建module是项目的创始人或者主要管理者的责任。大部分用户都只需要在module创建之后得到这个项目的本地文件拷贝就可以开始工作了。
现在假设你是项目的一个普通用户,而这个项目的cvs已经建立了,您要做的就是得到项目中的所有文件,并且和您本地的文件保持同步。
现在您的本地文件夹是D:\works\sandbox2。您要做的就是'checkout'。

然后告诉CVS你连接的SERVER。

您必须给出Module的正确拼写。如果项目组织者告诉你Revision或者branch的信息,您还需要指定您要取得的版本。

按下OK之后,您就得到了CVS中的相应版本。默认就是当前的最新版本。

上面的log信息中,U就代表取得本地文件。
现在,您的本地目录应该所有的文件都是绿色的。祝贺您,您已经取得了这个版本,可以开始工作了!
现在我们可以做一些真正的工作了。您意识到您需要修改readme.txt文件。您打开他,增加了一行。

您保存文件之后,会发现readme.txt又变成红色的了。假设过了一段时间之后,您忘记了您刚才改过些什么了。CVS可以帮您比较您的本地文件和server文件之间的差别。选择CVS Diff。

如果第一次使用,TortoiseCVS会询问您关于diff工具的位置。在cvsgui的主页上您也可以找到几个不错的opensource的diff工具。如果您拥有Microsoft Visual Studio的授权,附带的Windiff是一个很不错的选择。下面就是windiff的结果。

各个diff工具的输出会有所不同,但是您可以看见您新增加了一行文字。
好了,现在您很满意您的修改,确认提交了。再对readme.txt做一次commit。这一次一个对话框弹出请您为您的修改作出注释。这是很重要的,其他人以后在debug的时候根据您的注释更容易工作。

提交。

这一次提交之后,版本号变成了1.2。
TortoiseCVS也提供了每一个文件的History。在readme.txt的上下文菜单中选择properties,您会发现Tortoise新增加了一个属性页。

您可以在这个属性页中得到关于这个文件的更多信息。可惜在这个属性页中不支持对revision操作。这一点上TortoiseCVS比Visual Source Safe还有差距。
这只是最基本的CVS应用。TortoiseCVS并不是完全功能的CVS GUI。如果您需要更进一步的帮助,请参阅它的帮助。更多的其他CVS资料请参阅Karl Fogel的《Open Source Development With CVS》一书。该书的中文译本《CVS开源软件开发技术》由机械工业出版社出版(ISBN 7-111-08891-3/TP.1885,人民币35.00)。按此连接到华储网上电脑书店订购http://www.huachu.com.cn/asp/book/brow.asp?lbbh=B99112091 。