`

[转载]CVS 标签与分支

阅读更多
转载至IBM【ECLIPSE 小组开发环境实践: 第 2 部分】-片段
标签与分支

1.标签
考虑下面的应用场景:在项目基本完成的时候,我们希望为此时的文件状态(快照)建立一个标签milestone1。在后续的程序修改过程中,如果发现了一些在版本milestone1中不存在的BUG,我们就可以用milestone1这一统一的标识获取当时的文件快照并与修改后的文件进行对比,而不需要对每个文件都记住其修订版号。
在ECLIPSE中,有两种方法给模块建立标签。方法1.在工作拷贝上建立标签,就JAVA项目而言,可以通过JAVA透视图的右键菜单进行操作;方法2. 在CVS资源库视图中建立标签。在建立标签之前,最好保持工作拷贝与资源库的同步。以方法2为例,在CVS资源库视图的HEAD节点下选中希望建立标签的模块,在出现的右键菜单中选择【Tag as Version...】,在随后出现的对话框中添加标签名即可。图29是对模块UnitTest建立了milestone1和milestone2两个标签后的结果。
图29:建立了两个标签后的CVS资源库视图

标签与文件修订版号的关系见图30。某个标签内各个文件的修订版号可能不同,例如在标签1中,文件A的修订版号是1.2,而文件B的修订版号是1.3;同一个文件的相同修订版号也可能分属于不同的标签,例如在标签1和标签2中,文件B的修订版号都是1.3。
图30:标签示意图

从标签签出的模块是静态的,即使修改了本地的拷贝文件也不能向资源库提交。为了证实这一点,读者可以先签出Versions节点下的模块,在本地做修改后再向CVS资源库提交修改。此时将出现类似图31的错误提示画面。表明提交的文件属于标签milestone1,而milestone1不是分支因而不能提交。
图31:从标签签出的拷贝修改后也不能被提交


2.分支
2.1 建立分支
虽然通过标签可以方便地管理多个文件的修订版号,但是通过标签获得的文件拷贝是静态的,无法在其基础上修改并提交。因此,也就不能支持下面场景中的并发开发。假设某软件公司经过一段时间的开发,发布了产品A的1.0版。为了进一步扩大该产品的市场份额,随即在1.0版本的基础上进一步研发功能更强大的2.0版。但是公司还必须对产品1.0版进行维护和支持,如果用户在1.0版的使用过程中发现了BUG,应能尽快推出1.0修正版并发布相应的补丁程序。也就是说,开发人员要能在1.0修正版与2.0版这两条开发路线上同时工作。建立分支则可以支持上述要求。
与建立标签类似,在ECLIPSE中建立分支也有两种方法。本文以在CVS资源库视图中的操作为例演示分支的建立过程,其步骤如下:
1. 按建立标签的方法建立一个新的标签,例如v1_0。
2. 选中新标签v1_0,在右键菜单中选择【Add to Branch List...】(不限于新标签v1_0,可以在任意标签上操作,但是建立分支应当在关键时刻进行)。
3. 在出现的对话框中输入分支名,例如输入"UnitText1_0_X"并确定,此时就建立了分支。但是,此时的分支是空的,没有与之相关联的资源。
4. 选中新标签v1_0,在右键菜单中选择【Tag with Existing...】,在出现的对话框中打开节点Branches并选择在步骤3新建立的分支UnitText1_0_X,最后按OK按钮确定后就完全建立了一个新的分支。
分支建好后的CVS资源库视图如图32所示。
图32:建立分支后的CVS资源库视图

现在,就可以从主分支和UnitText1_0_X分支分别获得工作拷贝。从主分支获得的工作拷贝在提交后将反映到主分支上,而从UnitText1_0_X分支上获得的工作拷贝在提交后将反映到UnitText1_0_X分支中,在主分支和UnitText1_0_X分支上可以互不影响地进行并发开发。结合上述开发场景,产品A 1.0版的修正版对应UnitTest1_0_X分支,而产品A 2.0版可以在主分支上继续开发。
2.2 分支修订版号
分支中的修订版号与主分支中的修订版号略有不同,主分支、分支及修订版号的关系可用图33来说明。
图33:主分支与分支示意图

图34显示了文件cvstest.txt在UnitTest1_0_X分支上第一次提交后修订版号的变化情况。其修订版号不是从"1.10"转变为"1.11",而是转变为"1.10.2.1"。如果对该文件再进行一次提交,其修订版号将转变为"1.10.2.2"。即变化的是最后一个小数点后的数字。
图34:分支修订版号变化

2.3 将分支上的修改合并到主分支
继续2.1中的场景,开发人员在开发产品A 2.0版的同时还对1.0版进行维护。开发人员根据产品A 1.0版用户的反馈修正了一些BUG,由于产品A 2.0版也是基于1.0版继续开发的,他们发现有些BUG在开发中的2.0版中也存在。此时,就希望能将1.0修正版中的修改合并到主分支中。
图35-39演示了分支合并的过程。建立UnitTest1_0_X分支后继续在主分支上修改并提交cvstest.txt,结果如图35所示。
图35:分支合并1--主分支中的文件内容

从UnitTest1_0_X分支签出一个项目(如果用户jiangch或cvsuser2使用现有的ECLIPSE,则在签出项目时需要选择【Check Out As...】菜单并给项目取一个不同于"UnitTest"的名字),对文件cvstest.txt进行修改并提交,结果如图36所示。从图36还可以看出,从分支签出的项目在项目名称的后面还会注明分支的名称。
图36:分支合并2--UnitTest1_0_X分支中的文件内容

选择主分支工作拷贝的cvstest.txt,在其右键菜单中选择【Team】→【Merge...】,出现如图37所示的对话框。在"希望被合并的分支或标签"输入框中输入"UnitTest1_0_X";在随后的"通用基版本" 输入框中输入"v1_0",其意义为分支的起源版本(参见本文建立分支的步骤3和步骤4)。
图37:分支合并3--选择希望被合并的分支及其起始标签

在图37中点击"Finish"按钮,将出现同步透视图。如果希望将分支中文件内容的第二行合并到主分支中,只需将其从对比编辑器第二列拷贝至第一列,然后在文件的右键菜单中选择【Mark as Merged】(见图38),最后在文件的右键菜单中选择【Commit】。
图38:分支合并4--在透视图中进行合并操作

合并后的结果见图39。
图39:分支合并5--合并后主分支的结果


学习
免费电子书《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/
分享到:
评论

相关推荐

    CVS版本控制分支

    在CVS中,分支允许开发人员在不影响主线开发的情况下处理特定任务。根据描述中的选项,我们可以分析不同策略的优劣: A. 继续进行长期项目,然后处理其他事项。这种做法可能导致紧急问题的延迟解决,影响用户体验。...

    cvs分支以及合并的详细处理

    打开CVS客户端,选择“取出”操作,并在“修订版本”选项中选择需要创建分支的版本标签,比如tag1_2。 2. **创建分支**: - 取出1.2版本后,右键点击文件夹,选择“CVS”菜单下的“分支”选项。 - 在弹出的对话框...

    cvs的简介,CVS的用处

    2. **分支与合并**:CVS支持创建分支,允许开发者在不影响主分支的情况下进行实验性开发。当开发完成后,可以通过合并操作将分支上的改动合并回主分支。 3. **签出与提交**:开发者首先从CVS服务器签出(Checkout)...

    CVS客户端工具TortoiseCVS

    4. **标签(Tag)与分支(Branch)**:用于标记特定版本或创建可独立开发的分支。 5. **日志查看**:查看文件或项目的版本历史,包括每个提交的作者、时间戳和消息。 6. **图形化冲突解决器**:通过图形界面,用户...

    CVS服务器与WinCVS的配置与使用

    - 分支管理:CVS支持分支功能,允许开发人员在不影响主分支的情况下开发新功能或修复。 总之,CVS是一个强大的版本控制系统,通过合理的配置和使用,可以有效地管理多人协作的软件开发过程。通过WinCVS这样的图形...

    自制cvs 分支,合并操作手册

    《Cvs 分支与合并操作手册》 在软件开发中,版本控制系统是不可或缺的一部分,它帮助团队协同工作,管理代码的不同版本。CVS(Concurrent Versions System)是一种经典的分布式版本控制系统,广泛应用于软件开发...

    CVS教学电子书如何安装CVS,CVS使用

    6. **分支与标签**:CVS支持创建分支,允许开发者在不影响主线开发的情况下进行实验性修改。标签则用于标记项目的重要状态,如发布版本。 7. **查看历史**:`cvs log`命令可以帮助你查看文件或整个项目的变更历史,...

    Myeclipse与CVS配置

    8. **标签和分支**:CVS支持标签(Tag)和分支(Branch),标签是对特定版本的标记,分支则允许开发人员在不影响主分支的情况下进行独立开发。在Myeclipse中,你可以创建和管理这些。 9. **使用CVS历史**:...

    CVS 教程教学笔记

    6. **标签与分支**:了解CVS中的标签(Tag)和分支(Branch)机制,知道何时以及如何使用它们来标记特定版本或进行平行开发。 7. **权限管理**:学习如何设置CVS仓库的访问权限,控制不同用户对项目的读写权限,以...

    centos5 cvs安装与配置

    CentOS 5 CVS 安装与配置 在本文中,我们将一步一步地指导您如何在 CentOS 5 中安装和配置 CVS(Concurrent Versions System),并且介绍用户管理的相关知识。 安装 CVS 首先,我们需要安装 CVS 软件包。使用以下...

    cvs最简单的使用方法

    **CVS(Concurrent Versions System)是最简单使用方法详解** CVS,全称为并发版本系统,是...随着对CVS的深入使用,你将发现更多高级功能,如标签、冲突解决和权限管理,它们将帮助你更好地管理和协作软件开发项目。

    CVS配置与使用

    总的来说,CVS配置与使用是软件开发中的重要环节,它有助于团队成员间的协同工作,提高代码管理效率,避免版本冲突,同时提供了代码历史追踪和恢复旧版本的能力。正确配置和熟练使用CVS,能够极大地提升开发效率和...

    CVS项目版本控制工具

    3. **分支与合并**:CVS支持创建代码分支,允许开发人员在不影响主分支的情况下进行实验性开发。一旦开发完成,可以将这些更改合并回主分支。 4. **提交与更新**:开发人员可以通过`cvs commit`命令提交他们的改动...

    CVS安装工具-TortoiseCVS

    **TortoiseCVS与其他版本控制系统** 尽管Git等现代版本控制系统已经非常流行,但TortoiseCVS因其对CVS的完善支持,仍在一些项目中被广泛使用,尤其是在那些已经习惯了CVS工作流的团队中。然而,对于新项目或希望...

    CVS使用手册(cvs使用详解)

    6. **CVS与其他版本控制系统对比** - **SVN(Subversion)**:与CVS类似,但提供了更好的性能和安全性,目前更受欢迎。 - **Git**:现代分布式版本控制系统,拥有强大的分支管理和离线工作能力。 通过深入理解并...

    CVS_中文手册CVS_中文手册

    7. 集成其他工具:介绍如何将CVS与其他开发工具(如IDE、构建系统)集成,提升开发效率。 8. 安全性:讨论CVS的安全特性,如通过SSL加密传输数据,防止未授权访问。 文件名`CVS_中文手册.chm`表明这是一个帮助文件...

    CVS的配置与搭建教程

    1. 分支与标签:创建分支用于独立开发,标签用于标记特定版本。 2. 版本回溯:`cvs checkout -r <标签名>`或`-D <日期>`检出特定版本。 3. 暂存区:`cvs add -n`创建暂存区,避免未完成的更改被提交。 总结来说,...

    软件配置cvs与eclipse

    【软件配置CVS与Eclipse】的集成是开发过程中的一项重要技术,旨在提供高效源代码管理和协同开发环境。本文将详细介绍CVS(并发版本系统)的基本概念,以及如何在Eclipse IDE中配置和使用CVS。 一、关于CVS的三个W ...

    CVS的使用及其相关内容 CVS的使用及其相关内容

    四、CVS与其他版本控制系统的比较 虽然CVS在过去的开发环境中广泛应用,但随着Git等现代版本控制系统的发展,CVS的一些局限性逐渐显现,如性能问题、不支持大型文件、弱化的分支管理等。Git提供了更快的速度、更...

Global site tag (gtag.js) - Google Analytics