在 Rational Team Concert 中整合不同版本代码库修改的办法

用 Rational Team Concert 方便的同时管理多个版本代码库

在使用 Rational Team Concert(RTC)的过程中,用户经常需要将一个版本代码库上的修改整合到另一个版本代码库中。本文将介绍如何在 RTC 中整合不同版本代码库中的修改,这包括从低版本代码库到高版本代码库、以及从高版本代码库到低版本代码库的修改。同时,本文还将介绍整合代码过程中如何解决代码冲突的问题。通过阅读本文,读者可以学会如何灵活自如的利用 RTC 同时管理多个版本代码库,以及如何解决代码整合和代码冲突的问题。

王 健, 软件工程师, IBM

王健,IBM 中国软件开发实验室的一名软件工程师,具有多年开发经验及撰稿经验。对代码管理、整合,以及 Java、Web 开发的多个领域均有深刻的理解和认识。您可以通过 developerWorks社区与王健进行交流。



王 晓利, 软件工程师, IBM

王晓利,一位工作在 IBM CSDL 的软件工程师,具有 5 年的 J2EE 开发经验和 2 年的 DB2 存储过程开发经验,目前从事企业电子商务应用的开发。



常 伟, 软件工程师, IBM

常伟是一位工作在 IBM CSDL 的软件工程师,具有7年的 J2EE 开发经验和三年的 DB2 存储过程开发经验,目前从事企业电子商务应用的开发。您可以通过 developerWorks 社区与常伟进行交流。



2012 年 7 月 31 日

下载:IBM® Rational® Team Concert 试用版
下载更多的 IBM 软件试用版,并加入 IBM 软件下载与技术交流群组,参与在线交流。

用户经常需要将一个版本代码库上的修改整合到另一个版本代码库中。本文将介绍如何在 RTC 中整合不同版本代码库中的修改,这包括从低版本代码库到高版本代码库、以及从高版本代码库到低版本代码库的修改。同时,本文还将介绍整合代码过程中如何解决代码冲突的问题。通过阅读本文,读者可以学会如何灵活自如的利用 RTC 同时管理多个版本代码库,以及如何解决代码整合和代码冲突的问题。

RTC 简介

软件开发企业正面临着不断增长的快速交付高质量软件的压力,这些软件要与不断发展的业务目标看齐。作为团队的一部分来开发软件就像在乐队中演奏某种乐器,都需要技能和协作之间的平衡。IBM Rational Team Concert 软件是一个协作环境,帮助个人和团队发挥最佳性能。它提供了基本的软件版本控制、工作空间管理和平行开发支持。另外,它还能有效的连接分散的开发团队以提高个人和团队的生产力、缩短开发周期,使团队能快速交付高质量的软件。


用 RTC 同时管理多个版本代码库

用户可以使用 Rational Team Concert 管理代码、文档等任何需要在组内共享的文件。RTC 服务器端把这些文件存储在 Jazz repository 里,用户通过 RTC 客户端创建一个专属的 repository workspace 来存放需要用到的文件,然后从这个 repository workspace 下载文件到一个本地 Local workspace(本机磁盘上的一个文件夹),这个过程称之为 Load 。这样,用户就可以在这个 Local workspace 上进行开发、修改、编译文件了。当用户完成在 Local workspace 上的修改后,可以先提交这些修改到自己专属的 repository workspace ,这个过程称之为 Check-in 。这时,Repository workspace 和 Local workspace 就有了相同的文件。在专属的 repository workspace 里,所有的修改被整合作为一个 change set ,这样用户就可以通过这个 change set 一次性提交所有的代码修改了。

图 1 描述了用户专属的 Repository workspace 与本地 Local workspace 之间的关系,以及 Local workspace 从 Repository workspace Load 代码,和 Local workspace Check-in 修改的代码到 Repository workspace 的过程。

图 1. Repository workspace 与 Local Workspace 之间的关系
图 1. Repository workspace 与 Local Workspace 之间的关系

如果用户工作在一个 Team 里,每个 Team member 的 workspace 需要配置成这样:每个 Team member 可以 Check-in 他们修改的代码到一个共享的 repository 里,称它为一个 Stream 。图 2 描述了整个过程:一个 Team member 在 Local workspace 里修改代码后,Check-in 所做的修改到他专属的 Repository workspace 里。用户专属的 Repository workspace 可以配置成是 public 的,这样,别的 Team member 可以帮忙审阅其修改的代码,这个过程称之为 Review 。Review 没有问题后,用户提交所做的修改到共享的 Stream 里,这个过程称之为 Deliver 。因为 Stream 为所有 Team members 所共享,所以,其他 Team members 可以接受这些新修改的代码到自己专属的 Repository Workspace 里,这个过程称之为 Accept 。进而,其他 Team members 可以 Load 这些修改到各自的 Local Workspace 里,进行进一步的开发。

图 2. Team members 之间共享修改的代码
图 2. Team members 之间共享修改的代码

在项目的实际开发过程中,经常是一个版本已经到了稳定的集成测试阶段,同时还在为下一个版本开发新功能,这时就需要同时管理多个版本的代码库。比如,版本 10.6 的新功能开发已经完成,进入了稳定的集成测试阶段,同时开发 Team 还在为下一个版本 10.7 开发新的功能。为了使在 10.7 上的新开发不会引入 bug 到稳定的 10.6 版本,需要同时管理两个版本的代码库:10.6 和 10.7。10.6 上测试发现的问题,在 10.6 代码库上修正;10.7 新功能的开发在 10.7 代码库上进行,互不影响。这也是敏捷开发所推荐的开发方式。

如图 3 所示,Rational Team Concert 可以帮助用户同时管理多个版本代码库。Jazz repository 可以同时管理 Stream 10.6 和 Stream 10.7。用户需要基于不同版本的 Stream 创建不同的 Repository workspace 10.6 和 Repository workspace 10.7,并相应创建不同版本的 Local workspace 10.6 和 Local workspace 10.7。这样,当需要对 10.6 代码库修改时,在 Local workspace 10.6 上进行;当需要对 10.7 代码库修改时,在 Local workspace 10.7 上进行,互不干扰。

图 3. RTC 同时管理多个版本代码库
图 3. RTC 同时管理多个版本代码库

有时候,当在 10.6 代码库上修正 bug 时,发现 10.7 代码库也有同样的问题,这时需要整合 10.6 代码库上的修改到 10.7 代码库上;类似的,当在 10.7 代码库上做新功能开发时,有时也会发现一些 bug ,修正的同时也会想整合到 10.6 代码库上。本文的余下部分将介绍如何使用 Rational Team Concert 完成不同版本代码库之间修改的整合。


整合从低版本代码库到高版本代码库的修改

本章介绍如何整合从低版本代码库到高版本代码库的修改,以整合 Stream 10.6 上的代码修改到 Stream 10.7 上为例,具体步骤如下:

  1. 当完成 Local workspace 10.6 上的修改后,Check-in 修改到 Repository workspace 10.6,其他 Team members Review 没有问题后,Deliver 修改到 Stream 10.6。
  2. 使用 Rational Team Concert 基于 Eclipse 的客户端,打开 Local workspace 10.7,修改 Flow Target 指向 10.6 Stream,如图 4 所示。
图 4. 修改 Flow Target 指向低版本 Stream
图 4. 修改 Flow Target 指向低版本 Stream
  1. Accept 在 Stream 10.6 上修改的代码。如果遇到代码冲突,参考下一章内容解决代码冲突。如果要整合的代码自动与一个已经存在的 Task 相关联,并且用户暂时还不想 deliver 这个 change set,可以移到这些要整合的代码到一个新的 change set 里,在将来的某个时候,同时 deliver 这两个 change sets。
  2. 修改 Flow Target 重新指回 Stream 10.7,过程与步骤 2 类似。
  3. Deliver change set 到 Stream 10.7,完成。

当完成这些步骤后,在 Stream 10.6 所做的修改就被整合到了 Stream 10.7 上。


解决代码冲突

上一章提到了代码冲突,本章将介绍如何解决代码冲突。当在本地 Local workspace 上修改的代码与 Rational Team Concert 服务器端的 Stream 代码有冲突时,在 Rational Team Concert 客户端里会显示一个代码冲突图标,如图 5 所示。

图 5. 代码冲突
图 5. 代码冲突

解决代码冲突步骤如下:

  1. Accept 这个 change set 。如图 6 所示。
图 6. Accept change set
图 6. Accept change set
  1. 弹出警告窗口,询问用户是原意采用自动解决(Auto-Resolve)的方式还是稍后解决(Resolve Later)的方式。大多数情况下,当点击 Auto-Resolve 时,Rational Team Concert 能帮助自动解决代码冲突,这当然最好不过了。如图 7 所示。
图 7. 代码冲突警告
图 7. 代码冲突警告
  1. 但是在某些时候,Auto-Resolve 不能自动解决代码冲突,Rational Team Concert 将弹出如图 8 所示的窗口告诉用户,冲突不能自动解决,需要用户手动解决这些冲突。
图 8. 自动解决代码冲突失败
图 8. 自动解决代码冲突失败
  1. 有三种解决代码冲突的方式供用户选择:
  • Resolve with Proposed:使用推荐的文件解决冲突。这意味着服务器端的修改将直接覆盖 Local workspace 里所做的修改。
  • Resolve with Mine:使用本地文件解决冲突。这意味着 Local workspace 里所做的修改将直接覆盖服务器端的修改。
  • Resolve as Merged:使用整合后的文件解决冲突。这意味着使用手动整合后的文件同时覆盖服务器端的修改和 Local workspace 的修改。

如图 9 所示。

图 9. 三种解决代码冲突的选择
图 9. 三种解决代码冲突的选择
  1. 如果用户决定手动解决代码冲突,请采取如下步骤:
  1. 找到 Unresolved 文件夹,打开冲突的文件,如图 10 所示:
图 10. 打开冲突文件
图 10. 打开冲突文件
  1. 点击按钮,从右边文件拷贝所有不冲突的修改到左边文件。如图 11 所示:
图 11. 拷贝不冲突的修改
图 11. 拷贝不冲突的修改
  1. 更新 Local workspace 的修改(左边那个文件),保存,然后点击按钮 Resolve as Merged。如图 12 所示:
图 12. 用手动整合的结果解决冲突
图 12. 用手动整合的结果解决冲突

当完成以上步骤后,代码冲突的问题就解决了,代码冲突图标也将消失。


整合从高版本代码库到低版本代码库的修改

本章介绍如何整合从高版本代码库到低版本代码库的修改,以整合 Stream 10.7 上的代码修改到 Stream 10.6 上为例,具体步骤如下:

  1. 当完成 Local workspace 10.7 上的修改并测试通过后,Check-in 修改到 Repository workspace 10.7,但是先不要 deliver 修改到 Stream 10.7,把这个 change set 设置为 complete 状态。如图 13 所示:
图 13. 设置 change set 为 complete 状态
图 13. 设置 change set 为 complete 状态
  1. 用 Rational Team Concert 客户端打开 Local workspace 10.6,修改 Flow Target 指向 10.7 workspace。如图 14 所示:
图 14. 修改 Flow Target 指向高版本 Workspace
图 14. 修改 Flow Target 指向高版本 Workspace

然后,用户将能在 Incoming 里看到高版本代码库上的修改,如图 15 所示:

图 15. 高版本代码库上的修改
图 15. 高版本代码库上的修改
  1. 如果没有代码冲突,直接 accept 这个 change set 。
  2. 如果有代码冲突,需要首先解决这些冲突,如图 16 所示:
图 16. 整合高版本代码库修改到低版本代码库过程中的代码冲突
图 16. 整合高版本代码库修改到低版本代码库过程中的代码冲突

参考上一章内容解决代码冲突后,change set 将被标识为 merged ,如图 17 所示:

图 17. 解决代码冲突后
图 17. 解决代码冲突后
  1. 修改 Flow Target 重新指回 Stream 10.6。这时,将会出现两个 change sets,同时 deliver 这两个 change sets 到 Stream 10.6,如图 18 所示:
图 18. 两个 change sets
图 18. 两个 change sets
  1. 打开 Local workspace 10.7,修改 Flow Target 指向 Stream 10.6。在 Incoming 文件夹里将出现一个 change set ,accept 它。如图 19 所示:
图 19. accept change set
图 19. accept change set
  1. 修改 Flow Target 指回 Stream 10.7。当 accept Stream 10.6 的 change set 后,10.7 上修改的代码被 10.6 上的修改覆盖了。如图 20 所示:
图 20. 10.7 代码修改覆盖 10.6 代码修改
图 20. 10.7 代码修改覆盖 10.6 代码修改
  1. 用户需要根据 Stream 10.7 选择做具体的代码修改。检查代码修改,把它们放到一个新的 change set 里,所以现在这有三个 change sets 。一次性 Deliver 这三个 change sets 到 Stream 10.7,完成。如图 21 所示:
图 21. 三个 change sets
图 21. 三个 change sets

当完成这些步骤后,在 Stream 10.7 所做的修改就被整合到了 Stream 10.6 上。


结束语

本文介绍了如何使用 Rational Team Concert 整合不同版本代码库上的修改,包括整合低版本代码库到高版本代码库上的修改、高版本代码库到低版本代码库的修改,以及如何解决代码整合过程中遇到的代码冲突问题。虽然过程有点复杂,但是它对整合不同版本代码库上的修改特别有效,并且,使用这种方式,还能很方便的帮助用户判断出,在不同版本代码库之间,是否有需要整合的代码。

参考资料

学习

获得产品和技术

  • IBM Rational Team ConcertRTC)是一个基于 Jazz 平台技术的实时协作式软件交付环境,可以帮助跨地域分布的开发团队简化协作开发过程,并使其软件交付过程实现自动化管理。

    免费下载:

  • 获取免费的 Rational 软件工具包系列,了解最新的 IBM Rational 软件开发工具技术文档和资源。
  • 下载更多免费的 IBM Rational 试用版软件,了解 IBM Rational 软件的最新特性。
  • 获取更多 IBM 试用版软件,并熟练掌握来自 DB2®、Lotus®、Tivoli®,以及 WebSphere® 的开发工具和中间件产品,用这些试用版软件开发您的下一个项目。这些试用版软件可以免费直接从 developerWorks 下载。

讨论

  • 加入 developerWorks 中文社区,developerWorks 社区是一个面向全球 IT 专业人员,可以提供博客、书签、wiki、群组、联系、共享和协作等社区功能的专业社交网络社区。
  • 访问 developerWorks 社区上的 Jazz 技术小组,这里汇集了丰富的 Jazz 平台中文技术资源。 您可以通过这里了解更多关于 Jazz 平台和 Jazz 技术发展趋势的最新信息。
  • 访问 developerWorks 社区上的 敏捷开发小组,在那里您将有机会与更多的开发人员一起交流敏捷开发最佳实践。
  • 加入 IBM 软件下载与技术交流群组,参与在线交流。

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Rational
ArticleID=828468
ArticleTitle=在 Rational Team Concert 中整合不同版本代码库修改的办法
publish-date=07312012