玩转CVSNT+TortoiseCVS 版本控制系统(图解)(上)
 
作者:熔岩
日期:2006年9月16日
类别:配置管理
声明:原创作品,未经授权,谢绝转载!
 
背景
        这是去年秋天利用工作至于空暇时间写的一篇关于CVS的文章,因为是word格式的文章,发布不方便,今日放上来,希望对所有想了解和学习CVS的朋友有所帮助。
        文章以CVSNT+TortoiseCVS搭建CVS平台的配置过程为主线,详尽介绍了CVS的平台搭建的过程。并以应用为中心,结合Java程序员常用的两种开发工具Eclipse-3.2、IntelliJ IDEA 5.12 介绍了如何在这些IDE中使用CVS。文章中淡化了CVS的命令介绍,原因在于本人认为,命令可以在命令行很方便查看,但看了命令不等于你会用了这些工具。所以不要期待本文能讲解给你多少CVS命令。
        文章分为两大部分:第一部分主要讲述CVS平台的搭建;第二部分主要讲解如何应用搭建好的CVS做开发,文章偏重对Java程序程序的开发,其实别的语言也可以用CVS,都是一样的。
 
目录

目录 1
          第一部分
一、 环境: 1
二、 概述 2
三、 软件安装 2
四、 CVSNT服务器端的配置 2
(一)、仓库配置 2
(二)、服务器配置 6
(三)、兼容性配置 7
(四)、插件配置 8
(五)、高级配置 8
五、 CVS客户端配置 9
(一)、TortoiseCVS客户端的配置 9
(二)、用CVSNT或者TortoiseCVS命令行命令作为客户端软件操作CVS。 14
 
        第二部分
六、 CVS应用实践 15
(一)、CVSNT+Eclipse的CVS的配置 15
(二)、CVSNT+IntelliJ IDEA 5.12的CVS的配置 29
总结 43
声明 44
 
一、 环境:

Windows XP/2003
CVSNT 2.5.03 (Scorpio) Build 2382
TortoiseCVS 1.8.26
Eclipse 3.2
IntelliJ IDEA 5.12
 
二、 概述
 
        CVS 是 Concurrent Version System(并行版本系统)的缩写,用于版本管理.如果大家曾经参与过多人协作开发的项目,大家肯定有这样的痛苦经历:由于多个人同时修改同一个文件,自己辛辛苦苦修改的程序被别人彻底删除了.另外,如果你的软件/程序已经发布了三个版本,而这时候用户需要你修改第二个版本的东西,也许你会因为只保留了最新版本而痛哭流涕。还有就是你对程序做了一些修改,但是修改很少,你只想给远方的同事发一个两个版本之间的差别文件,这样可以免于邮箱不够大,网速太慢之类的问题.为了解决类似这样的问题,以及诸如生成补丁文件,历史版本修改等,一帮***(褒义)在原先 Unix 体系里很成熟的 SCCS 和 RCS 的基础上,开发了 CVS。(SCCS:Source Code Control System,RCS:Revision Control System)。
        我们知道,CVS是使用“客户端/服务器”(Client/Server)模式来工作的,这也是优秀版本控制系统的发展趋势。那么我们首先要有一台CVS服务器(当然这台电脑也可以同时作为客户端来使用)。本节所要介绍的就是如何利用CVSNT架设一台windows操作系统环境下的CVS服务器。CVSNT顾名思义,肯定是用在windows上的,此软件可以从[url]www.CVSNT.org[/url]免费下载最新版本。
         CVS 的基本工作思路是这样的:在一台服务器上建立一个仓库,仓库里可以存放许多不同项目的源程序。由仓库管理员统一管理这些源程序.这样,就好象只有一个人在修改文件一样.避免了冲突.每个用户在使用仓库之前,首先要把仓库里的项目文件下载到本地。用户做的任何修改首先都是在本地进行,然后用 cvs 命令进行提交,由 cvs 仓库管理员统一 修改.这样就可以做到跟踪文件变化,冲突控制等等。
 
三、 软件安装
 
        1、 目的:用CVSNT作为CVS服务器,用TortoiseCVS作为CVS的客户端。Eclipse3.2和Intellij IDEA 5.12这些开发工具也自带有标准的CVS客户端,这些客户端都是通用的。
        2、 软件的安装:
        软件的安装很简单,先安装CVSNT,再安装TortoiseCVS。默认安装即可。
        在此,安装软件路径分别为:
        CVSNT安装到D:\Program Files\cvsnt
        TortoiseCVS安装到D:\Program Files\TortoiseCVS
        安装完成后,重新启动计算机。
 
四、 CVSNT服务器端的配置
(一)、仓库配置
        1、 打开CVSNT的控制面板,运行开始菜单CVSNT菜单文件夹里的“CVSNT Control Panel”即可。如下图
 
        2、 如上图,确保CVSNT的两个服务启动正常,单击选项卡“Repository configuration”(仓库配置)。CVS仓库是代码的每个版本和所有相关记录在服务器端的储存地。有些时候又称它为主拷贝(Master Copy),为什么呢,我们将在后面的章节中了解到。在创建CVS仓库之前,我们首先需要新建一个文件夹用于充当仓库。如下图,创建仓库文件夹I:\mycvsdata。
 
        3、 该文件夹最好不要与程序放在一起,以免万一系统崩溃时破坏数据。然后,点击“开始”->“程序”->“CVS for NT”->“configure server”,出现对话框后选择“Repositories”选项卡,就会出现如下对话框
 
        4、 如上图,因为是本地计算机上架设CVS服务器,所以填写127.0.0.1,也可以填写为localhost;然后单击“Add”(添加),添加一个仓库,然后再单击“添加”按钮,浏览刚才新建的仓库文件夹I:\mycvsdata如下图:
  
        5、 如上右图,单击“确定”按钮:
  
        6、 如上右图,单击“OK”按钮,会提示:
 
        7、 如上图,单击“是”,就初始化文件夹作为仓库文件夹了,初始化后,在文件夹里面会生成一个CVSROOT的文件夹,里面有好多的文件和子夹,都是仓库的配置信息。此时仓库配置选项卡如下图:
 
(二)、服务器配置

        1、  单击“Server Settings(服务器配置)”选项卡,
   
        2、 如上图,保持默认选项即可。

(三)、兼容性配置
 
        1、 单击“Compatibility Options(兼容性配置)”选项卡:

 
(四)、插件配置
        1、  单击“Plugins(插件)”选项卡,
 

(五)、高级选项

        1、 单击“Advanced(高级)”选项卡,如下图,保持默认即可。
 
 
        2、 单击“确定”,完成服务器的配置。
 
五、 CVS客户端配置

(一)、TortoiseCVS客户端的配置
        1、 TortoiseCVS是最佳的CVS客户端软件,使用方便。为了演示配置,先建立一个工程文件夹C:\testprjcvs,然后建立一个文本文件test.txt。如图:
 
        2、 添加项目模块,也就是把项目添加到CVS仓库。方法如下,在项目文件夹上点击右键,按下图操作:
 
        3、 点击“创建新模块”后,会弹出,按照
 
        4、 如上图,填写完成后,单击“确认”,项目添加到仓库,并提示:
 
        5、 单击确定,完成添加。察看C:\testprjcvs,发现上面有个绿色标记,说明项目已经成功添加到仓库了。分别看项目文件夹、仓库文件夹如下:
 
 
 
        6、 打开项目文件夹,添加一个文件到仓库,操作过程如下,在
 
        7、 出现提示,因为是文本文件,所以单击确定,完成添加。
 
        8、 添加后,还需要提交操作,才能将文件加入到CVS,右键单击test.txt的文件,提交,也可以在空白处单击右键,选择提交,提交所有的没有提交的操作。
 
(二)、用CVSNT或者TortoiseCVS命令行命令作为客户端软件操作CVS。

        1、 将CVSNT或者TortoiseCVS安装目录添加到系统变量CVSNT或者TortoiseCVS中
        2、 为了操作方便,可以设置一个环境变量CVSROOT=:pserver:yutian@localhost:2401/mycvsdata,然后从命令行用命令进行登陆,命令如下:
cvs login
然后输入密码
然后就可以通过命令行可以执行cvs的各种操作了。在此不做详细介绍。
        注意:CVSROOT的写法是:
  :pserver:username@hostname(或IP地址):CVS仓库路径
  这个格式是绝对不能错的,否则CVS命令就不能正常执行。

  下面我解释一下上面的字符串的含义:
  1、“pserver” 是最常用的一直CVS远程访问方式;
  2、“username” 是指客户端在服务器上的用户名,也就是我们在上面的“配置CVS帐号”一结中讲到的;
  3、“hostname” 是CVS服务器的主机名,也可以是它的IP地址;
  4、“CVS仓库路径” 是一个CVS仓库所在的目录,用于区分你要访问的是哪个仓库(因为一个CVS服务器上可能有多个不同仓库)。
  例如::pserver:leizhimin@icisserver:/zfvims
 
(第一部分完)