转载至IBM【
ECLIPSE 小组开发环境实践: 第 1 部分】-片段
转载至IBM【
ECLIPSE 小组开发环境实践: 第 2 部分】
模块的输入与签出
1. 输入(import)
在正式的项目开发中,输入模块通常由CVS管理人员或项目经理完成,一般的开发人员不需要进行此项工作。在ECLIPSE中,可以将整个项目作为一个模块导入CVS资源库。这也是实际工作中经常采用的工作方式。我们事先在计算机chjnb的ECLIPSE中建立了一个项目UnitTest,如图10所示。
图10:演示用项目的导航器视图
为了将项目导入CVS资源库:打开ECLIPSE,选择希望导入CVS资源库的项目(project),点击右键,在出现的弹出菜单中依次选择【Team】→【Share Project...】,出现图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按钮,在接下来的一系列对话框中,选择Yes。随后出现如图14的对话框,在输入框中输入注释,例如:"XXX项目初始化"。 最后单击OK按钮。ECLIPSE将向CVS资源库中导入代码模块。
图14:共享项目--填写注释
模块导入成功后, java视图如图15所示。处于CVS管理状态的目录和文件,其图标的右下角有一个小圆柱。由于在前面的操作中,我们将bin目录排除了,因此bin目录显示为通常的图标。在文件的后面,显示了该文件的修订版号,而在目录的后面则没有,这是因为CVS系统版本管理的对象只是文件,而目录不是CVS版本管理的对象。所有文件的初始修订版号均为1.1。输入成功后,整个项目本身也处于签出的状态。
图15:处于版本管理状态下的项目视图
2. 签出(checkout)
如果想通过其它计算机上的ECLIPSE获得工作拷贝,按2.2的操作成功建立连接后,CVS Repository透视图见图16。在主分支HEAD下的 UnitTest上点击右键,在出现的弹出菜单中选择【Check Out】,这将签出CVS资源库中的模块UnitTest,并在ECLIPSE建立一个名为UnitTest的新Project。签出成功后转到java视图,会看到一个和图15类似的界面。
图16:在CVS资源库中已经存在一个共享项目UnitTest
日常操作
在具有版本管理的小组开发环境中,有些操作是开发人员几乎每天都要进行的,如提交修改工作、更新本地工作拷贝、解决冲突等。下面将详细介绍在ECLIPSE中如何实现这些日常操作。在进行这些操作前,都需要先建立与CVS服务器的连接。在ECLIPSE中进行这些操作时,如果是对目录进行操作,则ECLIPSE会自动对该目录下的子目录和文件进行相同的操作,对目录的操作是递归嵌套的。本文在下面的讲解中只以文件操作为例,但这些操作也适用于目录。一般来说,如果在某个目录下要对多个文件进行相同的操作,则选择目录操作比较简便。另外,如不特别说明,CVS资源库中的文件指的是属于主分支HEAD的文件。
1.提交(commit)
下面分四种不同的工作场景介绍如何将对工作拷贝的修改反映到CVS资源库。
a.签出模块后,在本地(Local)对文件进行了修改,CVS资源库中的文件没有变化。
在工作拷贝中对SimpleTest.java作一些改动并保存,此时ECLIPSE的画面见图17。在改动的文件及其所属的目录前都出现一个箭头,在希望提交的文件上点击右键,在出现的弹出菜单中选择【Team】→【Commit...】,在随后出现的对话框中输入注释后单击OK按钮。虽然注释不是必须输入的,但是,最好养成在每次提交时写注释的良好习惯,这在实际的系统开发过程中是很有必要的。提交成功后文件的修订版本号会自动增加,如图18所示,SimpleTest.java的修订版号从1.1变成了1.2。
图17:在ECLIPSE中能明确地标识被修改过的工作拷贝
图18:提交修改后,修订版号自动增加
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将弹出一个错误对话框,见图19。在这种情况下,为了能提交修改必须首先解决冲突。详细操作见下文的冲突解决。
图19:在冲突状态下提交将出现错误
在小组开发环境中,应该经常性地提交自己的工作成果,但也不能随意提交。一般来说,以提交的更改不对其他开发人员造成妨碍为前提条件。例如,提交的代码应能够被正常编译。如果在小组开发环境中还使用了诸如CHECKSTYLE之类的代码审查工具,则提交的代码除了能够被正常编译之外,还应能通过代码审查工具的审查。
2.更新(Update)
在系统的开发过程中,开发人员不应只关注自己的开发,还应尽量与其他开发人员保持同步,也就是需要经常地将其他开发人员的开发成果更新到本地的工作拷贝中。
a. CVS资源库中的文件被更新了,但本地文件没有更新。
在开发小组中,可能有部分开发人员负责一些通用模块的开发,而其余的开发人员则专注于业务系统的开发。在这样的开发场景中,业务系统的开发人员就应经常更新通用模块,保持工作拷贝中的通用模块与CVS资源库中通用模块的同步。在文件上点击右键,在出现的弹出菜单中选择【Team】→【Update...】。本地文件的内容将被替换为CVS资源库中相应文件的内容。
b. CVS资源库中的文件没有被更新,但本地文件被更新了。
此时,由于本地文件的修订版号与CVS资源库中文件的修订版号相同,更新操作实际上什么也不做。
c. CVS资源库中的文件和本地文件都被更新了。
此时,ECLIPSE会尽量将CVS资源库中的内容合并到本地文件中。如果在合并过程中没有发现冲突,则合并后的文件将包含本地修改和其他开发人员的修改;如果在合并过程中产生了冲突,则ECLIPSE会在合并文件中着重显示相冲突的部分,并将原本地文件作一个备份。图20~23演示了这一过程。cvstest.txt文件1.2版本的三行的内容分别为test line1、test line2、test line3。用户jiangch将文件内容修改并保存后的结构如图20,在jiangch提交之前,用户cvsuser2已将文件内容修改并提交,此时CVS资源库中cvstest.txt的修订版号为1.3,见图21。
图20:存在冲突的更新1--用户jiangch的修改结果
图21:存在冲突的更新2--用户cvsuser2修改并提交后的结果
用户jiangch在文件cvstest.txt上进行更新操作后的结果见图22
图22:存在冲突的更新3--用户jiangch进行更新操作后的结果
第二行保持不变,但产生冲突的第一、三行则被标记出来了。cvstest.txt的修订版号也变为1.3并处于已修改状态,新产生的文件.#cvstest.txt.1.2是修订版号1.2的备份文件。通过手工将jiangch与cvsuser2的修改内容合并后就可以进行提交操作了,图23是一个合并后提交的结果。
图23:存在冲突的更新4--用户jiangch合并后提交
3.冲突解决
ECLIPSE为CVS的操作提供了一个非常实用的功能:同步透视图(Team Synchronizing Perspective)。通过同步透视图,我们可以在提交、更新操作之前就发现可能存在的冲突。使用ECLIPSE小组开发环境的开发人员都应该熟悉同步透视图的使用。图21~24演示了如何使用同步透视图。在cvstest.txt 1.6与cvstest2.txt1.13的基础上用户jiangch对这两个文件进行了修改并保存。此时的结果如图24。
图24:冲突解决1--用户jiangch的修改结果
用户cvsuser2也在cvstest.txt 1.6、cvstest2.txt 1.13、TextRunnerTest.java1.1的基础上对这三个文件进行了修改并将修改结果提交到了CVS资源库。其结果见图25。
图25:冲突解决2--用户cvsuser2修改并提交后的结果
如果用户jiangch不能确定只有他一个人会修改这两个文件,他可以在如图21的画面上选择这两个文件并点击右键,在出现的弹出菜单中选择【Team】→【Synchronize with Repository...】,出现如图26所示的画面。图中①②③④所标识的按钮是过滤器,分别对应4种模式,可以控制在同步视图中显示何种状态的文件。
①:Incoming模式,显示CVS资源库中修订版号高于工作拷贝的文件。在实际工作中,可以选中此类文件并在右键菜单中选择【Update】。也就是将其它开发人员的开 发成果反映到自己的工作拷贝中,保持与其它开发人员的同步。
②:Outgoing模式,显示工作拷贝作了修改的文件。在实际工作中,可以选中此类文件并在右键菜单中选择【Commit】。也就是将自己的开发成果反映到CVS资源库。
③:双向模式,显示所有不同步的文件。包含模式①、模式②、模式④。
④:冲突模式,只显示在本地拷贝与CVS资源库都修改过且产生了冲突的文件。模式①-模式③包含了冲突模式。
图26:冲突解决3--同步透视图
处于冲突状态下的文件是不能提交的,为了提交产生冲突的文件,首先必须解决冲突。双击产生了冲突的文件,可以在一个特殊的对比编辑器中同时显示本地的工作拷贝文件与CVS资源库中的文件。通过这个编辑器可以方便地看到哪些地方存在冲突并解决冲突。例如在图26中,假定希望将工作拷贝的第一行和CVS资源库的第三行作为最终的修改结果,可以从编辑器的第二列拷贝第三行到第一列的第三行并保存。在同步视图中提交修改的操作:
1.在希望提交的文件上点击右键,在出现的弹出菜单中选择【Team】→【Mark As Merged】,这将使文件从冲突模式变为Outgoing模式。
2.在文件的右键菜单中选择【Team】→【Commit】。图27是提交后的结果画面。同步透视图还包含了很多其它的实用功能,关于同步透视图中各种按钮与右键菜单的说明可以查阅ECLIPSE的联机帮助文档。
图27:冲突解决4--用户jiangch合并后提交
4.比较、替换、修改履历
在软件项目的开发进程中,可能需要参考历史版本的信息,甚至将某个文件的内容回复到某个历史修订版。在ECLIPSE中也提供了这方面的功能。文件或目录的右键菜单【Compare With】提供了和其它修订版相比较的功能;右键菜单【Replace With】提供了将工作拷贝的内容替换为其它修订版内容的功能。例如,我们修改了工作拷贝的某个文件后又想放弃修改内容,此时,可以选中文件并在右键菜单中选择【Replace With】→【Last from Head】(假定CVS资源库没有被其他人员更新过,否则【Replace With】→【Revision...】)。上述操作对目录而言,实际上是对该目录中的所有文件执行操作。
在ECLIPSE中,通过文件的右键菜单【Team】→【Show Resource History】可以方便地查询文件的修改履历,例如文件cvstest.txt在某个时刻查询到的修改履历见图28。从中可以看出谁在什么时候修改了文件的内容,也可以看出在每次提交时都写注释会有助于追踪代码的修改意图及今后的代码维护工作。
图28:文件修改履历
学习
免费电子书《Open Source Development with CVS》:
http://cvsbook.red-bean.com/
CVS和Nightly Build技术,杨锦方,清华大学出版社,2002
CVSNT与ECLIPSE版本配合的相关信息:
http://download.eclipse.org/eclipse/downloads/drops/R-3.1-200506271435/eclipse-news-part1c.html
CVSNT与CVS的比较:
http://www.march-hare.com/cvspro/compare.htm
ECLIPSE官方网站:
http://www.eclipse.org
CVSNT的官方网站:
http://www.march-hare.com
在DeveloperWork网站上还有一篇关于ECLIPSE与CVS的文章:
使用 Eclipse 平台共享代码 -- Eclipse 如何使用源代码版本控制
获得产品和技术
ECLIPSE下载地址:
http://www.ECLIPSE.org/download/
CVSNT下载地址:
http://www.march-hare.com/cvspro/
分享到:
相关推荐
《CVS1easy-R操作说明书中文版》是一个针对CVS1easy-R设备的操作指南,旨在帮助用户理解和掌握该设备的正确使用方法。这份文档详细介绍了设备的接线步骤、参数设置以及相关的操作流程,对于初次接触或需要深入理解...
cvs-suite-trial-2009-3779.msi
通过这个程序,开发者可以执行如`cvs init`来创建仓库,`cvs checkout`获取工作拷贝,`cvs commit`提交更改,`cvs update`获取他人最新提交,以及`cvs diff`查看文件差异等一系列操作。 总之,CVS作为一款强大的...
### CVS使用基础知识点 #### 一、CVS简介与重要性 - **CVS** (Concurrent Versions System) 是一种广泛使用的开源版本控制系统,适用于软件开发团队管理代码库的版本控制。 - **重要性**: 在软件开发过程中,版本...
5. **命令行与图形界面**:MPlayer既可以作为命令行工具运行,也可以通过图形用户界面(如SMPlayer)进行操作,满足不同用户的使用习惯。 二、MPlayer的使用技巧 1. **命令行参数**:通过命令行参数,用户可以调整...
mingw安装失败,可手动下载:make-3.82.90-2-mingw32-cvs-20120902-bin.tar.lzma
本手册将详细讲解如何在不同的操作系统环境下安装和配置CVS,以及如何使用客户端工具进行日常的版本控制操作。 1. **引言** - **1.1 编写目的**:此手册旨在帮助用户了解CVS的基本概念,掌握CVS的安装和配置过程,...
【CVS完全手册--CVS一本通】 ...总结,CVS完全手册详细介绍了如何使用和配置CVS,包括环境设置、登录、基本命令、分支管理以及客户端和服务器的安装。通过掌握这些知识,开发者可以有效地在团队中进行代码管理和协作。
- **Checkin / Commit(签入/提交)**:将对工作拷贝的修改同步到资源库中的操作。 - **Update(更新)**:将资源库中的最新状态同步到工作拷贝。 - **Conflict(冲突)**:当资源库与工作拷贝之间的状态不一致时,...
本文将详细介绍如何在Windows 7环境下,特别是WAMP(Windows Apache MySQL PHP)服务器2.1e上安装和配置`...记得根据实际需求调整缓存策略,如设置合适的过期时间,以及处理并发和分布式环境下的数据一致性问题。
2. **基本命令**:详细介绍CVS的基本命令,如`cvs init`创建仓库,`cvs checkout`检出代码,`cvs commit`提交更改,`cvs update`获取最新版本等。 3. **工作流程**:解释一个典型的CVS开发流程,包括如何创建新项目...
### CVS 快速参考卡片详解 #### 一、概述 CVS(Concurrent Versions System)是一种流行的开源版本控制系统,能够支持跨网络透明地管理代码版本。它被广泛应用于软件开发项目中,帮助开发者们追踪代码的变化历史、...
cvs-suite-trial-2009-7480CVS安装包,亲测可用
5. 检出与签入:CVS提供检出(Checkout)和签入(Commit)操作,检出用于获取最新版本的代码,签入则将本地修改同步到服务器。 6. 差异比较:CVS可以显示两个版本之间的差异,帮助开发者了解每次更新的具体内容。 ...
在`cvs update`操作中,CVS会使用一些标志字符来标识文件状态,如: - `A`:表示文件已被添加到工作区,但未提交。 - `C`:表示文件有冲突,需要手动解决。 - `M`:文件已修改,但无冲突,需提交。 - `P`/`U`:文件...
深入理解x264源码,可以从以下几个关键模块入手:框架结构、宏块处理、熵编码实现、量化和反量化策略、以及运动估计和补偿算法。每个模块都包含了丰富的算法和优化技巧,值得深入探究。 总结,2004年5月11日的x264...
在使用CVS中文手册时,读者可以找到关于如何安装CVS、配置环境、创建新项目、导入现有项目、管理用户权限、处理冲突以及日常开发流程的详细步骤。例如,手册可能涵盖了如何使用`cvs init`命令创建一个新的版本库,`...
TortoiseCVS-1.8.0-RC6.exe TortoiseCVS-1.8.0-RC6.exe TortoiseCVS-1.8.0-RC6.exe
3. **日常开发**:在工作副本中编辑文件,使用TortoiseCVS菜单进行提交和更新操作。 4. **解决冲突**:如果出现冲突,通过TortoiseCVS的冲突解决工具进行处理。 5. **分支管理**:根据需要创建和合并分支,灵活应对...