基于ECLIPSE的CVS开发


基于 Eclips 的 CVS 开发 一、 建立 ECLIPSE 与 CVS 服务器的连接 1.打开 CVS Repository 视图(Perspective),可以通过如下菜单操作实现: 【Window】→【Open Perspective】→【Other...】。在出现的对话框中选 择 CVS Repository Exploring。 2. 在 CVS Repository 视图中单击右键,选择【New】→【Repository Location...】 (在 ECLIPSE 中,如果菜单项的后面有省略号,则表示选择该菜单项后,将出 现对话框供用户进一步设定相关信息)。出现如图 4 所示对话框。在对话框 中填入适当的信息即可。例如,根据图中的示范信息,将与我们在前面步骤 所安装的 CVSNT 服务器建立连接。需注意的是:在 Host 输 入框中可以输入 CVS 服务器的名字或 IP 地址;在连接类型下拉框中选择 pserver,这是 CVSNT+ECLIPSE 最简便的配置方式。 图图图图 1111::::在在在在 ECLIPSEECLIPSEECLIPSEECLIPSE 中建立与中建立与中建立与中建立与 CVSNTCVSNTCVSNTCVSNT 服务器的连接服务器的连接服务器的连接服务器的连接 建立连接后,在 ECLIPSE 的 CVS 资源库透视图中的结果如图 2 所示。其中的 HEAD 表示主分支(主干)、Branches 是分支的集合、 Versions 是标签的集 合、Dates 是用时间做标签的集合。由于 jiangch 是管理员帐户,因此还显 示了 CVSNT 的管理文件集合 CVSROOT。如果以非管理员帐户连接到 CVSNT 服 务器,则看不到上述 CVSROOT。 图图图图 2::::CVS 资源库视图资源库视图资源库视图资源库视图 二、 模块的输入与签出 1、 输入(import ) 在正式的项目开发中,输入模块通常由 CVS 管理人员或项目经理完成,一般的开 发人员不需要进行此项工作。在 ECLIPSE 中,可以将整个项目作为一个模块 导入 CVS 资源库。这也是实际工作中经常采用的工作方式。我们事先在计算机 chjnb 的 ECLIPSE 中建立了一个项目 UnitTest ,如图 3 所示。 图图图图 3::::演示用项目的导航器视图演示用项目的导航器视图演示用项目的导航器视图演示用项目的导航器视图 为了将项目导入 CVS 资源库:打开 ECLIPSE,选择希望导入 CVS 资源库的项目 (project ),点击右键,在出现的弹出菜单中依次选择【Team 】→【Share Project... 】, 出现图 4。 图图图图 4::::共享项目共享项目共享项目共享项目-- 选择资源库选择资源库选择资源库选择资源库 点击 Next 按钮,在下一个对话框中选择"use project name as a module name" ,再点 击 Next 按钮,此时,出现如图 5 所示的对话框。 图图图图 5::::共享共享共享共享项目项目项目项目-- 控制共享内容控制共享内容控制共享内容控制共享内容 有一些文件,我们不想加入 CVS 资源库。例如图 9 中的 bin 目录,里面放的是编 译时生成的 class 文件。此时,可以在上述对话框的 bin 目录上点击右键,在出现的弹 出菜单中选择【Add to cvsignore... 】,出现图 13 。(注:在 preference 中也可以进行设定) 在图 6 中单击 OK 按钮。 图图图图 6::::共享项目共享项目共享项目共享项目-- 选择哪类资源不用放入资源库选择哪类资源不用放入资源库选择哪类资源不用放入资源库选择哪类资源不用放入资源库 随后单击图 5 中的 Finish 按钮,在接下来的一系列对话框中,选择 Yes 。随后出现 如图 7 的对话框,在输入框中输入注释,例如:"XXX 项目初始化"。 最后单击 OK 按 钮。ECLIPSE 将向 CVS 资源库中导入代码模块。 图图图图 7::::共享项目共享项目共享项目共享项目-- 填写注释填写注释填写注释填写注释 模块导入成功后, java 视图如图 8 所示。处于 CVS 管理状态的目录和文件,其图 标的右下角有一个小圆柱。由于在前面的操作中,我们将 bin 目录排除了,因此 bin 目 录 显示为通常的图标。在文件的后面,显示了该文件的修订版号,而在目录的后面则 没有,这是因为 CVS 系统版本管理的对象只是文件,而目录不是 CVS 版本管理 的对 象。所有文件的初始修订版号均为 1.1 。输入成功后,整个项目本身也处于签出的状态。 图图图图 8::::处处处处于版本管理状态下的项目视图于版本管理状态下的项目视图于版本管理状态下的项目视图于版本管理状态下的项目视图 2、 签出(checkout ) 如果想通过其它计算机上的 ECLIPSE 获得工作拷贝,按 2.2 的操作成功建立连接 后,CVS Repository 透视图见图 9。在主分支 HEAD 下的 UnitTest 上点击右键,在 出现的弹出菜单中选择【Check Out 】,这将签出 CVS 资源库中的模块 UnitTest ,并 在 ECLIPSE 建立一个名为 UnitTest 的新 Project 。签出成功后转到 java 视图,会看 到一个和图 8 类似的界面。 图图图图 9::::在在在在 CVS 资源库中已经存在一个共享项目资源库中已经存在一个共享项目资源库中已经存在一个共享项目资源库中已经存在一个共享项目 UnitTest 在菜单中还有一项【Check Out As... 】,通过此菜单项,可以对签出进行更细致的控 制,例如,可以更改 Project 名;可以将签出的内容追加到已有 Project 中。 三、 日常操作 在具有版本管理的小组开发环境中,有些操作是开发人员几乎每天都要进行的,如 提交修改工作、更新本地工作拷贝、解决冲突等。下面将详细介绍在 ECLIPSE 中如何 实现这些日常操作。在进行这些操作前,都需要先建立与 CVS 服务器的连接。在 ECLIPSE 中进行这些操作时,如果是对目录进行操 作,则 ECLIPSE 会自动对该目录 下的子目录和文件进行相同的操作,对目录的操作是递归嵌套的。本文在下面的讲解中 只以文件操作为例,但这些操作也适用 于目录。一般来说,如果在某个目录下要对多 个文件进行相同的操作,则选择目录操作比较简便。另外,如不特别说明,CVS 资源 库中的文件指的是属于主分支 HEAD 的文件。 1、 提交(commit ) 下面分四种不同的工作场景介绍如何将对工作拷贝的修改反映到 CVS 资源库。 a.签出模块后,在本地(Local)对文件进行了修改,CVS 资源库中的 文件没有变化。 在工作拷贝中对 SimpleTest.java 作一些改动并保存,此时 ECLIPSE 的画面见图 10。在改动的文件及其所属的目录前都出现一个箭头,在希望 提交的文件上点击右键,在出现的弹出菜单中选择【Team】→【Commit...】, 在随后出现的对话框中输入注释后单击 OK 按钮。虽然注释不是必须输 入 的,但是,最好养成在每次提交时写注释的良好习惯,这在实际的系统开发 过程中是很有必要的。提交成功后文件的修订版本号会自动增加,如图 11 所示, SimpleTest.java 的修订版号从 1.1 变成了 1.2。 图图图图 11110000::::在在在在 ECLIPSEECLIPSEECLIPSEECLIPSE 中能明确地标识被修改过的工作拷贝中能明确地标识被修改过的工作拷贝中能明确地标识被修改过的工作拷贝中能明确地标识被修改过的工作拷贝 图图图图 11111111::::提交修改后提交修改后提交修改后提交修改后,,,,修订版号自动增加修订版号自动增加修订版号自动增加修订版号自动增加 b.签出模块后,在项目中新建了新文件,希望将新建的文件追加到 CVS 资源库中。 在新建的文件上点击右键,在出现的弹出菜单中选择【Team】→【Add to Version Control】。需要注意的是:上述操作并没有把新建的文件追加到 CVS 资源库中,为了把新建的文件追加到 CVS 资源库中,还要执行下列操作: 在新建的文件上点击右键,在出现的弹出菜单中选择【Team】→【Commit...】。 c.签出模块后,在项目中删除了文件,希望在 CVS 资源库中也删除相应 的文件。 首先在项目中删除文件,然后在被删除文件的父目录上点击右键,在出现 的弹出菜单中选择【Team】→【Commit...】。值得指出的是:上述操作只是 将 被删除的文件从主分支上删除了,但并没有从 CVS 资源库中被完全删除, 也不应该从 CVS 资源库中被完全删除,因为某个标签或分支可能需要被删除 的文件。 如果想恢复被删除的文件,在ECLIPSE 的 Navigator 视图中选中被删除的 文件的父目录,在右键菜单中选择【Team】→【Restore from Repository...】, 然后在出现的对话框中选择希望从哪个修订版恢复被删除文件的内容。 d.签出模块后,在本地(Local)对文件进行了修改,但在提交之前, 其他的开发人员已经对同一个文件进行了修改并提交到 CVS 资源库中。 此时,由于 CVS 资源库中该文件的修订版本号将高于本地该文件的修订 版本号,因此将不能提交该文件。如果试图提交该文件,ECLIPSE 将弹出一 个错误对话框,见图 12。在这种情况下,为了能提交修改必须首先解决冲突。 详细操作见下文的冲突解决。 图图图图 11112222::::在冲突状态下提交将出现错误在冲突状态下提交将出现错误在冲突状态下提交将出现错误在冲突状态下提交将出现错误 在小组开发环境中,应该经常性地提交自己的工作成果,但也不能随意 提交。一般来说,以提交的更改不对其他开发人员造成妨碍为前提条件。例 如,提交的代码应 能够被正常编译。如果在小组开发环境中还使用了诸如 CHECKSTYLE 之类的代码审查工具,则提交的代码除了能够被正常编译之外, 还应能通过代码审查工 具的审查。 2、 更新(Update ) 在系统的开发过程中,开发人员不应只关注自己的开发,还应尽量与 其他开发人员保持同步,也就是需要经常地将其他开发人员的开发成果更 新到本地的工作拷贝中。 a. CVS 资源库中的文件被更新了,但本地文件没有更新。 在 开发小组中,可能有部分开发人员负责一些通用模块的开发,而 其余的开发人员则专注于业务系统的开发。在这样的开发场景中,业务 系统的开发人员就应经常更新 通用模块,保持工作拷贝中的通用模块与 CVS 资源库中通用模块的同步。在文件上点击右键,在出现的弹出菜单 中选择【Team】→【Update...】。 本地文件的内容将被替换为 CVS 资 源库中相应文件的内容。 b. CVS 资源库中的文件没有被更新,但本地文件被更新了。 此时,由于本地文件的修订版号与 CVS 资源库中文件的修订版号相 同,更新操作实际上什么也不做。 c. CVS 资源库中的文件和本地文件都被更新了。 此 时,ECLIPSE 会尽量将 CVS 资源库中的内容合并到本地文件中。 如果在合并过程中没有发现冲突,则合并后的文件将包含本地修改和其 他开发人员的修改; 如果在合并过程中产生了冲突,则ECLIPSE 会在合 并文件中着重显示相冲突的部分,并将原本地文件作一个备份。图13~16 演示了这一过程。 cvstest.txt 文件 1.2 版本的三行的内容分别为 test line1、test line2、test line3。用户 jiangch 将文件内容修改并保存 后的结构如图 13,在 jiangch 提交之前,用户 cvsuser2 已将文件内容 修改并提交,此时 CVS 资源库中 cvstest.txt 的修订版号为 1.3,见图 14。 图图图图 13 ::::存在冲突的更新存在冲突的更新存在冲突的更新存在冲突的更新 1-- 用户用户用户用户 jiangch 的修改结果的修改结果的修改结果的修改结果 图图图图 14::::存在冲突的更新存在冲突的更新存在冲突的更新存在冲突的更新 2-- 用户用户用户用户 cvsuser2 修改并提交后的结果修改并提交后的结果修改并提交后的结果修改并提交后的结果 用户 jiangch 在文件 cvstest.txt 上进行更新操作后的结果见图 15 。 图图图图 15 ::::存在冲突的更新存在冲突的更新存在冲突的更新存在冲突的更新 3-- 用户用户用户用户 jiangch 进行更新操作后的结果进行更新操作后的结果进行更新操作后的结果进行更新操作后的结果 第二行保持不变,但产生冲突的第一、三行则被标记出来了。cvstest.txt 的修 订版号也变为 1.3 并处于已修改状态,新产生的文件. #cvstest.txt.1.2 是修订版号 1.2 的备份文件。通过手工将 jiangch 与 cvsuser2 的修改内容合并后就可以进行提交操 作了,图 16 是一个合并后提交的结果。 图图图图 16 ::::存在冲突的更新存在冲突的更新存在冲突的更新存在冲突的更新 4-- 用户用户用户用户 jiangch 合并后提交合并后提交合并后提交合并后提交 3、 冲突解决 ECLIPSE 为 CVS 的操作提供了一个非常实用的功能:同步透视图(Team Synchronizing Perspective) 。通过同步透视图,我们可以在提交、更新操作之前 就发现可能存在的冲突。使用 ECLIPSE 小组开发环境的开发人员都应该熟悉同 步透视图的使用。图 14~17 演示了如何使用同步透视图。在 cvstest.txt 1.6 与 cvstest2.txt1.13 的基础上用户 jiangch 对这两个文件进行了修改并保存。此时的 结果如图 17 。 图图图图 17 ::::冲突解决冲突解决冲突解决冲突解决 1-- 用户用户用户用户 jiangch 的修改结果的修改结果的修改结果的修改结果 用户 cvsuser2 也在 cvstest.txt 1.6 、cvstest2.txt 1.13 、TextRunnerTest.java1.1 的基础上对这三个文件进行了修改并将修改结果提交到了 CVS 资源库。其结果 见图 18 。 图图图图 18 ::::冲突解决冲突解决冲突解决冲突解决 2-- 用户用户用户用户 cvsuser2 修改并提交后的结果修改并提交后的结果修改并提交后的结果修改并提交后的结果 如果用户 jiangch 不能确定只有他一个人会修改这两个文件,他可以在 如图 21 的画面上选择这两个文件并点击右键,在出现的弹出菜单中选择 【Team】→【Synchronize with Repository...】,出现如图 26 所示的画面。 图中①②③④所标识的按钮是过滤器,分别对应 4 种模式,可以控制在同步 视图中显示何种状态的文件。 ①:Incoming 模式,显示 CVS 资源库中修订版号高于工作拷贝的文件。在实 际工作中,可以选中此类文件并在右键菜单中选择【Update】。也就是 将其它开发人员的开 发成果反映到自己的工作拷贝中,保持与其它开 发人员的同步。 ②:Outgoing 模式,显示工作拷贝作了修改的文件。在实际工作中,可以选中 此类文件并在右键菜单中选择【Commit】。也就是将自己的开发成果反 映到 CVS 资源库。 ③:双向模式,显示所有不同步的文件。包含模式①、模式②、模式④。 ④:冲突模式,只显示在本地拷贝与 CVS 资源库都修改过且产生了冲突的文 件。模式①-模式③包含了冲突模式。 图图图图 19 ::::冲突解决冲突解决冲突解决冲突解决 3-- 同步透视图同步透视图同步透视图同步透视图 处于冲突状态下的文件是不能提交的,为了提交产生冲突的文件,首先 必须解决冲突。双击产生了冲突的文件,可以在一个特殊的对比编辑器中同 时显示本地 的工作拷贝文件与 CVS 资源库中的文件。通过这个编辑器可以 方便地看到哪些地方存在冲突并解决冲突。例如在图 19 中,假定希望将工 作拷贝的第一行和 CVS 资源库的第三行作为最终的修改结果,可以从编辑器 的第二列拷贝第三行到第一列的第三行并保存。在同步视图中提交修改的操 作: 1.在希望提交的文件上点击右键,在出现的弹出菜单中选择【Team】→ 【Mark As Merged】,这将使文件从冲突模式变为 Outgoing 模式。 2.在文件的右键菜单中选择【Team】→【Commit】。图 20 是提交后的结 果画面。同步透视图还包含了很多其它的实用功能,关于同步透视图中各种 按钮与右键菜单的说明可以查阅 ECLIPSE 的联机帮助文档。 图图图图 20::::冲突解决冲突解决冲突解决冲突解决 4-- 用户用户用户用户 jiangch 合并后提交合并后提交合并后提交合并后提交 4、 比较、替换、修改履历 在软件项目的开发进程中,可能需要参考历史版本的信息,甚至将 某个文件的内容回复到某个历史修订版。在 ECLIPSE 中也提供了这方面 的功能。文件或目录的右键菜单【Compare With】提供了和其它修订版 相比较的功能;右键菜单【Replace With】提供了将工作拷贝的内容替 换为其它修订版内容的功能。例如,我们修改了工作拷贝的某个文件后 又想放弃修改内容,此时,可以选中文件并在右键菜单中选择【Replace With】→【Last from Head】(假定 CVS 资源库没有被其他人员更新过, 否则【Replace With】→【Revision...】)。上述操作对目录而言,实 际上是对该目录中的所有文件执行操作。 在 ECLIPSE 中,通过文件的右键菜单【Team】→【Show Resource History】可以方便地查询文件的修改履历,例如文件 cvstest.txt 在某 个时刻查询到的修改履历见图 21。从中可以看出谁在什么时候修改了文 件的内容,也可以看出在每次提交时都写注释会有助于追踪代码的修改 意图及今后的代码维护工作。 图图图图 22221111::::文件修改履历文件修改履历文件修改履历文件修改履历
还剩13页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 20 金币 [ 分享pdf获得金币 ] 0 人已下载

下载pdf

pdf贡献者

kalen

贡献于2010-11-27

下载需要 20 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf