《CVS搭建及应用.doc》由会员分享,可在线阅读,更多相关《CVS搭建及应用.doc(18页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、CVS搭建及应用版本管理系统可以帮助开发人员有效地管理软件资源的版本问题。CVS(Concurrent Version System)是目前最常用的版本管理系统,而 Eclipse 是最流行的开放源码的集成开发环境。在 Eclipse 中,与 CVS 相关的功能被统称为小组开发环境。本系列的第 1 部分不仅解释了 CVS 的相关术语,还详细介绍了小组开发环境的建立过程;本系列的第 2 部分则试图以一种简明易懂的方式来讲解 Eclipse 小组开发环境的使用方法。1前言版本管理系统可以帮助开发人员有效地管理软件资源(源代码文件、配置文件等)的版本问题。版本管理系统可以帮助开发人员追踪文件的修改履
2、历;防止文件因疏忽而被错误的修改、删除;在小组开发环境中,帮助多个开发人员保持文件的同步;通过文件的修改履历,还可以帮助开发人员发现修改过程中产生的BUG,因此应用CVS可以在一定程度上提高软件的开发效率。现在很多开发工具中都集成了CVS功能,例如Eclipse、InteliJ、NetBeans等;虽然Eclipse等集成开发环境(IDE)对CVS提供了很好的支持,可以大幅降低CVS的使用难度,但是很多开发人员在使用CVS时还是不知所措。笔者认为这是由于他们不了解CVS的相关术语及CVS的工作模式所致。因此,本文首先介绍CVS的相关术语及CVS的工作模式。然后通过一些实例与应用场景, 展示如何
3、在ECLIPSE中使用小组开发环境。本文所使用的ECLIPSE没有安装本地语言包插件,操作界面为英文。但理解了相关术语后,读者即使在中文环境中也能正常操作。2CVS安装2环境安装LINUX与WINDOWS是目前应用最普及的操作系统。下面首先介绍CVS服务器在两种操作系统上的安装与配置过程,然后介绍如何从Eclipse连接CVS服务器,最后介绍如何使用ECLIPSE共享模块。无论后台的CVS安装在何种操作系统之上,对于Eclipse来说,与CVS服务器建立了连接之后其使用方法是一样的。21 安装CVSNTCVSNT可以从以下地址获得http:/www.march-图1:选择CVSNT的安装类型图
4、2:修改CVSNT的安装目录,选择CVSNT的可安装组件安装完成后可以通过菜单操作【开始】【CVSNT】【CVSNT Control Panel】或控制面板打开CVSNT的控制管理台。为了使用CVSNT进行版本管理,首先必须建立一个资源库。在CVSNT的控制管理台中选择Configuration Repository面板并单击Add,出现如图3所示的画面。图3:初始化资源库在Location中填入资源库的位置,在Description中填写该资源库的说明信息(可以为空)。值得注意的是当Location包含多级目录时,Name输入框中的缺省值不对,需要修改,例如可以使用最后一级目录名,如图3。最
5、后点击OK按钮,在随后出现的询问是否初始化资源库的确认对话框中选择Yes即可。22 Windows防火墙如果在安装有CVS服务器的计算机上使用的是WINDOWS XP2操作系统,并且WINDOWS XP2自带的Windows防火墙处于启用状态,则不能从其它计算机连接CVS服务器。读者可以暂时关闭Windows防火墙或者将CVSNT服务的端口号(2401)添加到Windows防火墙的例外中,其设置步骤如下:1从WINDOWS操作系统的控制面板中双击Windows防火墙的图标,出现如图7所示的画面。图7:Windows防火墙控制台2在图7中单击添加端口按钮,请按图8将CVSNT的服务端口加入防火墙
6、的例外列表。图8:将CVSNT的服务端口加入防火墙的例外列表3在图8中按确定按钮就把CVSNT的服务端口加入防火墙的例外列表,见图9。图9:CVSNT的服务端口已被加入到防火墙的例外列表如果使用了其他的防火墙产品,也应进行相应的设置。23 建立CVS用户为了在我们的实验环境中模拟多个用户,还需要在CVS服务器中建立至少两个CVS用户。由于CVSNT安装后采用混合认证方式工作,CVS服务器的系统用户和在CVS本身管理的用户文件中定义的用户都能使用CVSNT服务。为了简便,这里建立了两个系统用户。在WINDOWS XP中可以通过计算机管理这一工具追加系统用户,如图6所示。除了管理员帐号jiangc
7、h(我将管理员Administrator重命名为jiangch),还添加了一个帐户cvsuser2。图6:添加用户帐号现在可以在另一台计算机的Eclipse中,以cvsuser2为用户名建立与CVSNT服务器的连接。至此,我们就建立了一个完整的实验环境。本文的实验环境用了两台计算机,如果计算机的内存够大,也可以在一台计算机上建立一个完整的实验环境。24 建立Eclipse与CVS服务器的连接Eclipse可以从http:/www.ECLIPSE.org/download下载。Eclipse无需安装,在已安装JRE或JDK1.4.2或以上版本的计算机上,只要将下载的文件解压后即可运行。为了能在E
8、clipse使用CVS,需要建立Eclipse与CVS服务器的连接。其操作步骤如下:1打开CVS Repository视图(Perspective),可以通过如下菜单操作实现:【Window】【Open Perspective】【Other.】。在出现的对话框中选择CVS Repository Exploring。2在CVS Repository视图中单击右键,选择【New】【Repository Location.】(在Eclipse中,如果菜单项的后面有省略号,则表示选择该菜单项后,将出现对话框供用户进一步设定相关信息)。出现如图4所示对话框。在对话框中填入适当的信息即可。例如,根据图中的
9、示范信息,将与我们在前面步骤所安装的CVSNT服务器建立连接。需注意的是:在Host输入框中可以输入CVS服务器的名字或IP地址;在连接类型下拉框中选择pserver,这是CVSNT+Eclipse最简便的配置方式。图4:在ECLIPSE中建立与CVSNT服务器的连接建立连接后,在Eclipse的CVS资源库透视图中的结果如图5所示。其中的HEAD表示主分支(主干)、Branches是分支的集合、Versions是标签的集合、Dates是用时间做标签的集合。由于jiangch是管理员帐户,因此还显示了CVSNT的管理文件集合CVSROOT。如果以非管理员帐户连接到CVSNT服务器,则看不到上述
10、CVSROOT。图5:CVS资源库视图3模块的输入与签出31 输入(import)在正式的项目开发中,输入模块通常由CVS管理人员或项目经理完成,一般的开发人员不需要进行此项工作。在Eclipse中,可以将整个项目作为一个模块导入CVS资源库。这也是实际工作中经常采用的工作方式。我们事先在计算机chjnb的Eclipse中建立了一个项目UnitTest,如图10所示。图10:演示用项目的导航器视图为了将项目导入CVS资源库:打开ECLIPSE,选择希望导入CVS资源库的项目(project),点击右键,在出现的弹出菜单中依次选择【Team】【Share Project.】,出现图11。图11:
11、共享项目-选择资源库点击Next按钮,在下一个对话框中选择use project name as a module name,再点击Next按钮,此时,出现如图12所示的对话框。图12:共享项目-控制共享内容有一些文件,我们不想加入CVS资源库。例如图9中的bin目录,里面放的是编译时生成的class文件。此时,可以在上述对话框的bin目录上点击右键,在出现的弹出菜单中选择【Add to cvsignore.】,出现图13。(注:在preference中也可以进行设定)在图13中单击OK按钮。图13:共享项目-选择哪类资源不用放入资源库随后单击图12中的Finish按钮,在接下来的一系列对话框
12、中,选择Yes。随后出现如图14的对话框,在输入框中输入注释,例如:XXX项目初始化。 最后单击OK按钮。EclipseE将向CVS资源库中导入代码模块。图14:共享项目-填写注释模块导入成功后, java视图如图15所示。处于CVS管理状态的目录和文件,其图标的右下角有一个小圆柱。由于在前面的操作中,我们将bin目录排除了,因此bin目录显示为通常的图标。在文件的后面,显示了该文件的修订版号,而在目录的后面则没有,这是因为CVS系统版本管理的对象只是文件,而目录不是CVS版本管理的对象。所有文件的初始修订版号均为1.1。输入成功后,整个项目本身也处于签出的状态。图15:处于版本管理状态下的项
13、目视图32 签出(checkout)如果想通过其它计算机上的Eclipse获得工作拷贝,按2.2的操作成功建立连接后,CVS Repository透视图见图16。在主分支HEAD下的 UnitTest上点击右键,在出现的弹出菜单中选择【Check Out】,这将签出CVS资源库中的模块UnitTest,并在Eclipse建立一个名为UnitTest的新Project。签出成功后转到java视图,会看到一个和图15类似的界面。图16:在CVS资源库中已经存在一个共享项目UnitTest在菜单中还有一项【Check Out As.】,通过此菜单项,可以对签出进行更细致的控制,例如,可以更改Proj
14、ect名;可以将签出的内容追加到已有Project中。4 CVS客户端的配置4.1 配置Eclipse的客户端来连接上CVS服务器打开Eclipse中的“CVS资源库研究”透视图,然后在左部的“CVS资源库”视图单击右键,在右键菜单中选择“新建资源库位置”选项。在弹出的窗口输入CVS的相关信息,如图5.5所示,填完后单击“完成”按钮。图5.5 添加CVS资源库%注意:(1)资源库路径用CVS服务器上的绝对路径,即图5.2中Name文本框的值。(2)密码是上面用cvs命令行设置的。但如果是通过“控制面板”里的“用户账号”来创建用户的,那么此密码即为该用户的Windows登录密码。4.2 将项目提
15、交到CVS服务器上将项目提交到CVS服务器上的步骤如下:(1)转到Eclipse的“资源”透视图。右键单击项目名myproject,然后选择“小组共享项目”选项,如图5.6所示。在弹出的“共享项目”窗口中,接受默认设置,直接单击“下一步”按钮。图5.6 “共享项目”窗口(2)如图5.7所示,窗口提示输入模块名,接受默认选项,单击“下一步”按钮。图5.7 共享项目输入模块名(3)如图5.8所示,在窗口中选择要提交到CVS上的项目资源(即文件),不必作任何设置(默认为提交项目所有文件),直接单击“完成”按钮。图5.8 共享项目项目资源(4)如图5.9所示,连续弹出两个窗口,都单击“是”按钮。又弹出
16、一个窗口要求输入提交注释,写上一些说明文字(也可以为空),单击“确定”按钮,Eclipse开始将项目文件提交到CVS服务器上。图5.9 “资源提交”对话框4.3 CVS服务器上的项目导入到Eclipse中如果新同事加入项目开发团队,这时他就需要将CVS服务器上的项目导入到自己的Eclipse中。为了方便模拟,再安装一个Eclipse,只要安装目录不同,两个Eclipse同时运行也不会有冲突。将CVS服务器上的项目导入到Eclipse中的步骤如下:(1)在主菜单选择“文件导入”选项,弹出如图5.10所示的窗口。图5.10 “导入”窗口(2)选择“从CVS检出项目”,单击“下一步”按钮。弹出一个设
17、定资源库的位置窗口,接受默认选项,直接单击“下一步”按钮,弹出如图5.11所示的窗口。图5.11 填写CVS上的模块名称(3)在模块名称文本框输入myproject,单击“下一步”按钮,弹出如图5.12所示的窗口。myproject这个名称不是项目名称,而是项目共享到CVS上时所取的模块名(模块名的设置参见图5.7),只不过通常将CVS模块名取成和项目名相同。图5.12 “检出为”窗口(4)在项目名称文本框输入myproject(可任意取名)。Eclipse会以此名称生成一个项目,并将CVS的文件导出到此项目下。在该窗口中直接单击“完成”按钮,CVS服务器上的最新文件开始导入到本机中。5. 文
18、件提交与更新的方法5.1 CVS和VSS的不同之处对于用过微软VSS的读者,在介绍CVS文件操作之前,有必要了解一下两者的不同 之处:(1) 用VSS必须check out(检出)文件才能修改此文件,而此时该文件将被锁定,其他人不能再修改(可以读),必须要等文件被上一个修改者check in(提交)才行,也就是说VSS同一文件一次只允许一个人修改。注:VSS新版本2005同时支持单人签出模式和CVS的模式(2)CVS则使用完全不同的机制,多人可以同时修改同一文件。文件不会像VSS一样被锁定,所以也就没有修改文件之前要check out(检出)的操作,CVS的最基本操作是 “提交文件到CVS”和
19、“从CVS更新文件到本机”。当然在CVS中如果多人同时修改了一个文件,在提交时会提示代码冲突,并提供一个窗口来合并这些修改,但这样的合并修改操作是很麻烦的,因此应尽可能地避免多人同时修改一个文件。5.2 文件的提交和更新1将修改的文件提交到CVSjava文件,然后选择小组更新这种更新方法,为什么不用呢?”这种更新方法是将CVS的最新版更新到本机,当本机文件没有修改的时候才用这种方法。如果对HelloWorld作了修改,CVS上的反而是旧内容了,这时再用这种更新方法则对本地的HelloWorld.java文件不会产生任何影响。5.3 解决文件提交的冲突在多人项目开发中,由于同时修改一个文件,一时
20、就会产生提交冲突,本小节就来说明一下如何解决这种冲突。在上面检出项目时,已经另外安装了一个Eclipse,相当于多了一个开发者,原来的称为Giles,新加入的叫Tom。Giles和Tom电脑上的HelloWorld.java的版本都是1.2。这时Giles在文件中增加一条语句“System.out.println(Giles第1次修改);”,同样Tom也在文件中作了类似修改,如图5.15所示。图5.15 两开发者对代码的修改情况Giles先提交HelloWorld.java文件,这时版本变成了1.3,由于Giles是第一个提交的,所以他不会遇到代码冲突。Tom编程速度慢一些,所示后提交,这时就
21、会和Giles先提交上去的代码产生冲突。因为如果用Tom的代码更新CVS,则Giles的修改就会被冲洗掉,所以Eclipse此时就会报文件冲突,不允许直接提交。那么Tom该如何提交自己的修改呢?解决办法如下:右键单击“HelloWorld.java小组更新”选项,如图5.16所示。 图5.16 更新后的界面此时HelloWorld.java的版本已经变成了1.3,更新后的冲突也已标记出来。这时就可以根据代码中的标记来合并修改,修改完毕后再提交到CVS,此时版本变成了1.4,如图5.17所示。图5.17 代码合并修改后的界面Eclipse考虑得很周到,在文件更新时,会将Tom的旧文件保存为一个称
22、为“.#HelloWorld.java.1.2”的备份。这个备份文件不会被提交到CVS,因为Eclipse中已经将这类文件作了忽略设置。忽略设置的界面如图5.18所示,在主菜单选择“窗口首选项”选项可打开此窗口。5.4 如何忽略掉不想提交的文件假设当提交一个项目时出现如图5.19所示的情况,图中的bin目录包含的是编译后的class文件,没有必要将它提交到CVS上。我们可以右键单击它,然后在弹出的快捷菜单中选择“添加至.cvsignore”,这样bin目录就被忽略掉,不会提交到CVS上。图5.18提交到CVS时被忽略的资源的设置界面图5.19 忽略提交5.5 实践建议(1)把项目做成模块目录(
23、Java包),各人负责自己的模块和目录,这样就不容易造成重复修改。(2)做到每日提交,即每天下班之前都要将各自完成的代码提交到CVS上,并且提交的代码要求是完整可运行的代码,关键是要保证其他人更新你的代码之后不会引起错误。(3)对于共用型的文件,要做到即时修改,即时提交。(4)任何人在修改文件之前,先更新CVS的最新版到本机。(5)项目团队的Eclipse等开发环境(安装目录、软件版本等)要保持一致。这样就可以将整个项目共享到CVS,团队成员也可以从CVS上更新整个项目,而不必担心因为一些项目配置文件不同导致更新项目后出错。另外,当新团队成员加入时,只要导入CVS上的整个项目,无须再配置项目,就可以即刻开发运行。