持续集成之“分支策略”8203; 管理资料_第1页
持续集成之“分支策略”8203; 管理资料_第2页
持续集成之“分支策略”8203; 管理资料_第3页
持续集成之“分支策略”8203; 管理资料_第4页
持续集成之“分支策略”8203; 管理资料_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

持续集成之“分支策略”8203; 管理资料 现代版本控制系统(SCM)的作用已不仅仅是保存历史版本,它还是各软件开发组织利用其分支功能实现多人并行开发,提高生产效率的一种工具, 在测试三角形与分段构建策略原则一文中,咱们说到:由于自动化测试时间较长,Joe的团队实施了分阶段的持续集成。虽然这么做引入了一些风险(比如因提交阶段构建中的测试覆盖面小而不能尽早发现代码中问题),但提高了整个团队的开发效率。而且,Joe会根据实际运行情况,在提交构建和次级构建之间不断调整自动化测试用例集来缓解分阶段构建带来的风险。 现在,这个软件游戏平台的第一个版本已经接近完成,马上就要进行内测了。团队面临的问题是:“如何做分支管理?持续集成该怎么做?” 今天是星期五。下班后,Joe和Alice等主要开发人员并没有马上回家,而是在一个小酒吧里聊天呢。 Alice说道:“现在我们一直使用主干开发方式,团队所有人都工作在Trunk上,与之对应的只有一个持续集成环境。下星期就要做内测了,我们是不是应该拉一个测试分支,用于修复测试中发现的缺陷,在主干继续开发新功能呢?一旦修复完内测缺陷的话,我们就可以在这个分支上进行,再把这个测试分支的代码变更合并回主干。就像这样。”她拿了一张纸画了出来(如图1所示)。 “好啊,好啊。我们分成两个团队,一个在测试分支上工作,修复内测过程中发现的缺陷;另一个在主干上工作,开发新的功能。”Bob回应道。 “对于拉分支做测试这件事, _疑问。但是,我不同意最后再把代码合并到主干上。”Joe说道。“我们一直在使用持续集成实践,目的就是尽早集成。为什么要等到以后再将测试分支的代码合并回主干,而不是每次修复一个缺陷就合并回来呢?每次缺陷修复的代码变更不会太多,所以合并起来很容易。等到最后再合并,首先是容易漏掉一些代码,其次是一次合并代码太多,容易出错。所以,我建议下星期拉分支时,为测试分支也建立一个持续集成环境。每次发现缺陷时,都为它写一个测试,加到测试套件中。修复代码提交后,就会触发测试分支对应的持续集成构建。一旦构建成功,就将其合并回主干。”说完之后,他在Alice画的那张图上修改了一下(如图2所示)。 “那由谁来负责把分支中的Bugfix合并回主干呢?” “当然是由Bugfix的人来负责了,他是确保合并正确性的关键。如果Trunk上的代码已被修改,无法合并,Bug负责人就要与主干开发人员交流,这个Bug在主干的有效性,然后再决定是否修改,在哪里修改的问题。” “我们要对分支上的Bug定义修复标准,尽量在Trunk上修复Bug,除非这个Bug严重影响质量。这样可以避免无休止地在分支上做代码修改。这样,Bug数才会收敛,分支的活跃期才会缩短。” “嗯,相对于我们一直使用的主干开发方式来说,这种短分支策略的成本是: “哦,我之前工作的一家公司,就是用这种分支策略。”Bob说道,“但情况变得非常复杂。版本满天飞,想做合并都不容易。” Joe说道:“我想,可能是因为他们的客户不想升级版本,所以必须在已的版本上再发小版本吧?” “的确是这样的。”Bob回答道,“他们的周期大约是半年。由于已的版本质量不佳,所以总是有紧急修复的版本上线。另外,客户比较担心新版本的稳定性,所以只要满足自己的当前需求,就会一直使用旧版本。有些大客户还会要求公司开发针对其自身的特别需求,并快速上线,结果可想而知。” Alice说道:“其实,这已经是短周期分支的变形,即有多个活跃分支的长周期分支策略(如图3所示)。这种分支策略是应该尽量避免的,它的复杂性和维护成本都很高,因为: Bob问道:“有什么办法避免这种糟糕的多活跃分支开发策略吗?” “办法当然有,但不能解决所有问题。”Joe回答道,“比方说,首先,要确保每个版本的开发质量,让客户放心升级。其次,软件产品要支持自动升级。在通常情况下,只要满足需求,用户就不会轻易升级软件。所以,要让软件具有自动发现新版本并在后台自动升级的能力。当然,在升级后要通知用户。这样,只要将新版本到互联网上的某个服务器上就行了。最后,也是最重要的一点,新版本周期要短一些,不断快速地推出新特性,这样就可以让用户对产品及研发团队有信心,让客户感觉他们的需求很快就会被满足。” “对于那些企业用户来说,这种方法可能不管用。因为,企业内网很少可以连通外网。”Alice说道。 “如果是这种情况的话,除了软件本身质量好且能自动无缝升级以外,在销售时可以与客户签订协议,告知所售软件版本的生命周期(比如18个月)以及升级条款,促使企业升级该软件,比如的大版本升级,或者因缺陷原因可升级等等。”Joe回答道。 “嗯,我们开发的是游戏软件平台,部署在互联网上,所以不会遇到这个问题。”Alice说道。 Joe微笑着说道:“我们将会面临另外一种问题,即多个小团队开发不同的游戏组件问题。” “哦,对了!现在我们的游戏平台中虽然仅有几个游戏,目前还一起在主干上开发。但在下一版本中,我们会增加大量的游戏组件,那应

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论