1.1 CVS简介
CVS是Concurrent Versions System(并发版本系统)的简称。它是一个开放源代码的项目,是当前最流行的版本控制系统,目前绝大部分Open Source项目都使用它来做版本管理。微软的VSS也可以用来进行Java项目的版本管理,但在学会使用Eclipse后,使用CVS。
CVS采用客户机/服务器体系,代码、文档的各种版本都存储在服务器端,开发者首先从服务器上获得一份复制到本机,然后在此基础上进行开发。开发者可随时将新代码提交给服务器,也可以通过更新操作获得最新的代码,保持与其他开发者的一致。
由于Eclipse本身内置了CVS客户端,只要再建立一个CVS服务器就可以使用这一功能强大的版本控制系统。CVS的功能虽强大,但一般项目通常只用到其20%的功能,所以只要了解最常用的操作就可以了。本系统是的是Eclipse 3.0.1版本,下面将以面向实际项目使用需要的方式来介绍CVS。
1.2 CVS服务器端的安装与配置
CVS起源于UNIX/Linux平台,由于我们平时大多使用的是Windows系统,所以在UNIX/Linux平台下安装使用CVS服务器端的方法,我们不再重复。CVS服务器在Windows平台的版本:CVSNT,我们下面将着重介绍CVSNT的安装。
首先,我们得下载CVSNT,可以到CVSNT主页http://www.cvsnt.com/downloads/去下载它,我们下载的是cvsnt 2.0.58d版本,把它安装在Windows XP系统上。
(1)运行安装程序,完全按照它的默认设置,连续单击“next”按钮,即可完成安装。我们把cvsnt安装在默认的“C:"Program Files"cvsnt”目录下。
(2)通过Windows选择“开始→所有程序→CVSNT”选项,打开cvsnt的设置面板“Service control panel”,如图1.1所示,表明上面两个服务已经启动。
!注意:如果提示找不到rundll32.exe,则单击“浏览”按钮,指向“C:"windows"system32" rundll32.exe”并运行它。
(3)单击图1.1中的“Repositories”选项卡,再单击Add按钮,创建一个存放版本文件的目录“c:/cvsfile”,如图1.2所示,单击“OK”按钮后,在弹出的两个窗口中都回答“是”。
!注意:建议在“Name”栏改写成绝对路径“c:/cvsfile”,就能够确保在cvsnt安装后可以正常使用。
图1.1 Service control panel界面 图1.2 建立存放版本文件的目录
(4)转到“Compatibility”选项卡,将3个选项都选上,如图1.3所示。
!注意:这一步非常重要,否则CVS 2.0.58d无法在Eclipse 3.0.1下正常使用,如果你使用Eclipse 3.1M4版,则此步设置可跳过。
图1.3 Compatibility选项卡
(5)CVS客户端连接服务器,需要在服务器端分配一个用户名,并且用户名要求必须是Windows的登录用户。我的Windows XP系统的用户名为giles,密码为空。进入Windows的命令行窗口,如图1.4所示,转到C:"Program Files"cvsnt目录下,输入命令cvs -d c:"cvsfile passwd -a giles,按回车键输入giles在CVS上的登录密码(我们设置的密码为111111)。
!注意:安装好CVSNT之后,也可以通过“控制面板”里的“用户账号”来创建一个新用户,这时该用户自动成为CVS用户,密码相同。
至此,我们完成了CVS服务器部分的全部设置,现在客户端可以使用Admin为账号来登录CVS服务器。
图1.4 命令行窗口
(6)其他
如果要将CVS的文件移植到另一台电脑上,或者原cvs服务器所在电脑重装了操作系统,这时就要涉及移植或恢复CVS。按照图1.2的操作将它注册一下即可。由此可知,备份CVS上的文件只需将cvsfile目录复制一份就可以了。
如果要对权限要求比较严格的话,那么就需要设置CVS用户的权限,CVS的权限是和操作系统权限相关的(用户都是操作系统的用户)。
1.3 CVS客户端的配置
1.3.1 配置Eclipse的客户端,连接CVS服务器
打开Eclipse中的“CVS资源库研究”透视图,然后在左部的“CVS资源库”视图单击右键,在右键菜单中选择“新建→资源库位置”选项。在弹出的窗口输入CVS的相关信息,如图1.5所示,填完后单击“完成”按钮。
图1.5 添加CVS资源库
!注意:
(1)资源库路径用CVS服务器上的绝对路径,即图1.2中Name文本框的值。
(2)密码是上面用cvs命令行设置的111111。如果是通过“控制面板”里的“用户账号”来创建用户,那么此密码即为该用户的Windows登录密码。
1.3.2 将项目提交到CVS服务器上
将项目提交到CVS服务器上的步骤如下:
(1)转到Eclipse的“资源”透视图。右键单击项目名myproject,然后选择“小组→共享项目”选项,如图1.6所示。在弹出的“共享项目”窗口中,接受默认设置,直接单击“下一步”按钮。
图1.6 “共享项目”窗口
(2)如图1.7所示,窗口提示输入模块名,接受默认选项,单击“下一步”按钮。
图1.7 共享项目-输入模块名
(3)如图1.8所示,在窗口中选择要提交到CVS上的项目资源(即文件),不必作任何设置(默认为提交项目所有文件),直接单击“完成”按钮。
图1.8 共享项目-项目资源
(4)如图1.9所示,连续弹出两个窗口,都单击“是”按钮。又弹出一个窗口要求输入提交注释,写上一些说明文字(也可以为空),单击“确定”按钮,Eclipse开始将项目文件提交到CVS服务器上。
图1.9 “资源提交”对话框
1.3.3 CVS服务器上的项目导入到Eclipse中
如果新成员加入项目开发团队,这时就需要将CVS服务器上的项目导入到自己的Eclipse中。为了方便模拟,再安装一个Eclipse,安装目录要不同(两个Eclipse同时运行也不会有冲突)。将CVS服务器上的项目导入到Eclipse中的步骤如下:
(1)在主菜单选择“文件→导入”选项,弹出如图1.10所示的窗口。
图1.10 “导入”窗口
(2)选择“从CVS检出项目”,单击“下一步”按钮。弹出一个设定资源库的位置窗口,接受默认选项,直接单击“下一步”按钮,弹出如图1.11所示的窗口。
图1.11 填写CVS上的模块名称
(3)在模块名称文本框输入myproject,单击“下一步”按钮,弹出如图1.12所示的窗口。注意:myproject这个名称不是项目名称,而是项目共享到CVS上时所取的模块名(模块名的设置参见图1.7),通常将CVS模块名取成和项目名相同。
图1.12 “检出为”窗口
(4)在项目名称文本框输入myproject。Eclipse会以此名称生成一个项目,并将CVS的文件导出到此项目下。在该窗口中直接单击“完成”按钮,CVS服务器上的最新文件开始导入到本机中。
1.4 文件提交与更新的方法
1.4.1 CVS和VSS的不同之处
(1)用VSS必须check out(检出)文件才能修改此文件,而此时该文件将被锁定,其他人不能再修改(可以读),必须要等文件被上一个修改者check in(提交)才行,也就是说VSS同一文件一次只允许一个人修改。
(2)CVS则使用完全不同的机制,多人可以同时修改同一文件。文件不会像VSS一样被锁定,所以也就没有修改文件之前要check out(检出)的操作,CVS的最基本操作是 “提交文件到CVS”和“从CVS更新文件到本机”。在CVS中如果多人同时修改了一个文件,在提交时会提示代码冲突,会提供一个窗口来合并这些修改,但这样的合并修改操作是很麻烦的,因此应尽可能地避免多人同时修改一个文件。
1.4.2 文件的提交和更新
1.将修改的文件提交到CVS
在HelloWorld.java中增加一条输出语句“System.out.println("第一次修改");”,然后保存。右键单击窗口右侧“导航器”视图中的HelloWorld.java文件,在弹出菜单中选择“小组→提交”选项,如图1.13所示。
图1.13 提交界面
2.从CVS更新文件到本机
删除掉HelloWorld.java中的语句“System.out.println("第一次修改");”然后保存,这时要将CVS服务器上的最新代码更新到本地,有以下两种方法:
(1)右键单击HelloWorld.java文件,在弹出的菜单中选择“替换为→HEAD的最新内容”选项。
(2)右键单击HelloWorld.java文件,在弹出的菜单中选择“小组→与资源库同步”选项,在弹出的同步界面,如图1.14所示,单击“将当前更改从右边复制到左边”按钮,然后保存。
图1.14 资源库同步界面
有的人可能会问:“右键单击HelloWorld.java文件,然后选择‘小组→更新’这种更新方法,为什么不用呢?”
这种更新方法是将CVS的最新版更新到本机,当本机文件没有修改的时候才用这种方法。如果对HelloWorld作了修改,CVS上的反而是旧内容了,这时再用这种更新方法则对本地的HelloWorld.java文件不会产生任何影响。
1.4.3 解决文件提交的冲突
在多人项目开发中,会同时修改一个文件,就会产生提交冲突,下面说明一下如何解决这种冲突。
在上面检出项目时,已经另外安装了一个Eclipse,相当于多了一个开发者,原来的称为Giles,新加入的叫Tom。Giles和Tom电脑上的HelloWorld.java的版本都是1.2。这时Giles在文件中增加一条语句“System.out.println("Giles第1次修改");”,同样Tom也在文件中作了类似修改,如图1.15所示。
图1.15 两开发者对代码的修改情况
Giles先提交HelloWorld.java文件,这时版本变成了1.3,由于Giles是第一个提交的,所以他不会遇到代码冲突。Tom后提交,这时就会和Giles先提交上去的代码产生冲突。因为如果用Tom的代码更新CVS,则Giles的修改就会被清除,所以Eclipse此时就会报文件冲突,不允许直接提交。解决办法如下:
右键单击“HelloWorld.java→小组→更新”选项,如图1.16所示。
图1.16 更新后的界面
此时HelloWorld.java的版本已经变成了1.3,更新后的冲突也已标记出来。这时就可以根据代码中的标记来合并修改,修改完毕后再提交到CVS,此时版本变成了1.4,如图1.17所示。
图1.17 代码合并修改后的界面
Eclipse在文件更新时,会将Tom的旧文件保存为一个称为“.#HelloWorld.java.1.2”的备份。这个备份文件不会被提交到CVS,因为Eclipse中已经将这类文件作了忽略设置。忽略设置的界面如图1.18所示,在主菜单选择“窗口→首选项”选项可打开此窗口。
图1.18 提交到CVS时被忽略的资源的设置界面
1.4.4 如何忽略掉不想提交的文件
当提交一个项目时出现如图1.19所示的情况,图中的bin目录包含的是编译后的class文件,没有必要将它提交到CVS上。右键单击它,然后在弹出的快捷菜单中选择“添加至.cvsignore”,这样bin目录就被忽略掉,不会提交到CVS上。
图1.19 忽略提交
1.4.5 实践建议
(1)把项目做成模块目录(Java包),各人负责自己的模块和目录,这样就不容易造成重复修改。
(2)做到每日提交,都要将各自完成的代码提交到CVS上,并且提交的代码要求是完整可运行的代码,关键是要保证其他人更新你的代码之后不会引起错误。
(3)对于共用型的文件,要做到即时修改,即时提交。
(4)任何人在修改文件之前,先更新CVS的最新版到本机。
(5)项目团队的Eclipse等开发环境(安装目录、软件版本等)要保持一致。这样就可以将整个项目共享到CVS,团队成员也可以从CVS上更新整个项目,而不必担心因为一些项目配置文件不同导致更新项目后出错。另外,当新团队成员加入时,只要导入CVS上的整个项目,无须再配置项目,就可以开发运行。
1.5 在CVS上为软件打包一个版本
在开发告一段时间,就要打包一个版本,打包版本的操作步骤如下:
(1)右键单击“项目名”,在弹出的快捷菜单中选择“小组→标记为版本”选项。此时如果有修改,但没有提交到CVS上,则会弹出下如图1.20所示的一个提示框,如果单击“确定”按钮,则未提交的修改就不会包含在本次打包的这一版本中。
(2)如图1.21所示,在窗口中为此版本起一个名称为V001。由于此名称可能已存在于CVS中,所以下面还有一个复选框,如果选上该复选框,在打包时就会替换掉同名的老版本;如果没有选上,则在有同名版本时,就会弹出错误提示框。
图1.20 确认未提交的更改 图1.21 给版本起名
如果版本已经打包,但后来发现有一个文件有点问题,于是想把这一个修改的文件更新到上一个版本中,但另外一些修改的文件则不想更新到上一个版本。这时如果再通过右键单击项目名来打包,则项目所有修改的文件都会被更新到上一个版本中。
正确的操作步骤如下:
(1)将修改的文件提交到CVS上。
(2)右键单击该修改文件的“文件名”,在弹出的快捷菜单中选择“小组→标记为版本”选项。
(3)在图1.21中,还是起名V001,并且要选择复选项,然后单击“确定”按钮。
此操作和打包项目版本惟一不同之处是:前者右键单击“项目名”,后者右键单击修改文件的“文件名”。
!说明:CVS打包版本并非是将项目文件再复制一份,如果去c:"cvsfile目录中查看提交的项目文件,就会发现项目文件只有一份,这一份文件中会记录着每一次的更改,所以CVS打包版本只是做了一个更改位置的标志。
1.6 将项目替换成CVS上的其他版本
接着1.5节内容,当打包成版本之后,如果要将此版本还原回项目中,则操作步骤如下:右键单击“项目名”,然后在弹出的快捷菜单中选择“替换为→另一个版本或分支”选项,得到如图1.22所示窗口,选择版本V001,单击“确定”按钮。
!注意:此操作会将本地所有的修改都覆盖掉,所以在操作之前先把本地修改提交到CVS上保存。
图1.22 CVS的分支版本列表
1.7 修改旧版本的BUG
如果已经发布了软件的1.0版,而现在正在开发2.0版,但用户在使用1.0版的时候发现了一些BUG,这时就需要修改1.0版的这些BUG,具体修改操作步骤如下:
(1)将CVS导出成另外一个项目。参见1.3.3小节,其他步骤都一样,仅在最后一步时,输入另外一个项目名myproject2。这样分成两个项目后,修改旧版本和开发新版本就可以同时进行而不互相干扰。
(2)用1.6节的替换版本操作将myproject2项目替换成V001版本(假设V001就是出问题的1.0版)。如图1.23所示,在图中可以看到myproject2的后面跟着一个V001版本 标志。
图1.23 从CVS导入的myproject2
(3)这时还不能在myproject2上修改,即使修改了也不能提交CVS。因为还差一步,即需要为V001版创建一个分支,操作步骤如下:右键单击myproject2的项目名,然后选择“小组→分支”选项,在弹出如图1.24所示的窗口中输入分支名V001_patch,并单击“确定”按钮。
!说明:很容易把“分支”和“版本”看成类似的概念,但实际上“分支”是和HEAD的概念比较接近,“提交”操作只能将文件提交到HEAD或分支上。
(4)如图1.25所示,myproject2的项目名后就有了一个分支名V001_patch,表示该项目已经在这个分支下工作了。
图1.24 设定分支名 图1.25 myproject2在V001_patch分支下
(5)现在可以在myproject2项目中将BUG修改好,并提交到CVS上了。修改不是提交到HEAD上,而是提交到分支V001_patch上,所以不会影响到软件2.0版的开发。提交之后,文件尾部的版本号也起了变化,如图1.26所示。
图1.26 在分支下的程序版本号
(6)当修改完BUG后,就可以给软件再打一个版本V100_1,并将修正了BUG后的版本发布给用户。
1.8 小 结
我们介绍CVS的从服务器安装到客户端具体操作的整条开发线的使用流程,其中文件提交与更新是项目开发中使用最频繁的操作,我们详细讲述了具体的操作流程,并给出了由项目开发经验中总结出来的实践建议。通过上面的学习,大家就可以轻松地在项目中使用CVS来进行版本管理。
<script type="text/javascript"></script>
分享到:
相关推荐
【Eclipse中CVS使用详解】 CVS,全称为Concurrent ...总之,Eclipse中的CVS使用涵盖了从服务器配置到客户端操作的全过程,通过学习和实践,开发者能够有效地利用CVS进行版本管理,提高项目开发的效率和协作的顺畅度。
### Eclipse中利用CVS进行版本管理 #### 一、CVS简介 CVS(Concurrent Versions System),即并发版本系统,是一种广泛应用于软件开发领域的版本控制系统。作为一个开源项目,CVS因其灵活性和可靠性成为了众多开源...
在Eclipse中,CVS的使用提供了项目版本管理的重要功能,弥补了Eclipse自身Local History的局限性。Local History虽然可以保存文件的局部历史记录,但无法满足复杂的版本控制需求,如标记特定版本、添加注释或版本化...
作为一个成熟且功能丰富的工具,CVS允许团队成员在分布式环境中协同工作,管理代码和文档的不同版本。CVS采用客户机/服务器架构,所有版本的文件都存储在中央服务器上,开发人员可以从服务器获取文件副本进行本地...
### Eclipse中CVS的使用详解 #### CVS概述 CVS(Concurrent Versions System...通过上述详细介绍,我们可以清晰地了解如何在Eclipse中使用CVS进行项目版本控制,这对于提升团队协作效率和代码管理质量具有重要意义。
本课件介绍了在eclipse开发环境下安装和使用cvs插件的方法。cvs用于联合开发管理,在共同开发一个工程时使用cvs可以保证小组成员之间的协作和同步。
总结,Eclipse中的CVS使用涉及了项目共享、版本控制、代码同步等关键操作,而CVS服务器端的安装和配置则涉及到库创建、用户管理、网络设置等多个方面。理解并熟练掌握这些步骤,对于进行有效的团队开发和版本管理至...
Eclipse自带CVS客户端,这意味着一旦CVS服务器搭建完成,开发者可以直接在Eclipse环境中使用CVS进行版本控制。 1. **集成配置**:在Eclipse中打开“Window”>“Preferences”>“Team”>“CVS”,按照服务器地址、...
在团队协作开发中,版本控制系统如CVS(Concurrent Versions System)是非常重要的工具,它帮助开发者跟踪和管理代码的不同版本。CVS允许多个开发者同时工作在同一个项目上,而不会互相冲突。 本配置说明主要针对...
Eclipse CVS插件就是专门为Eclipse集成CVS功能而设计的工具,使得开发者可以在Eclipse环境中方便地进行CVS操作。 在安装Eclipse CVS插件之前,你需要确保已经下载了相应的压缩包文件。这个压缩包通常包含了插件所需...
CVS版本管理器在过去的开发环境中扮演着重要角色,尽管它相对较老,但因其简洁易用的特性,仍被一些开发者所青睐。 在【描述】中提到,CVS版本管理器可以与集成开发环境(IDE)如MyEclipse无缝集成。MyEclipse是...
通过以上步骤,你就可以成功地在Eclipse中导入并管理来自CVS的项目了。这一流程不仅适用于初学者,对于经验丰富的开发者来说,也是一个高效的工作流,能够帮助他们快速集成外部项目,提高开发效率。
- **配置选项**:在“Compatibility”页面中,选中“Respond as cvs 1.11.2 to version request”以兼容Eclipse的CVS客户端。 - **用户管理**: - CVSNT支持与NT验证集成,简化用户管理,即NT用户自动成为CVS用户...
- **基本原则概述**:Eclipse 设计之初便考虑到了软件开发过程中各领域之间的紧密联系,因此其集成环境支持多种资源库服务,这不仅适用于 CVS,也适用于其他版本控制系统。 - **资源共享**:Eclipse 的 IDE 支持团队...
在Eclipse中整合CVS,开发者可以方便地进行代码版本控制,包括提交、更新、查看历史等操作。myPluginCVS插件是专门为Eclipse设计的,旨在简化这个过程。 首先,我们来看如何在Eclipse上安装CVS插件。通常,有两种...