研讨会回顾|AI驱动的DevOps云端转型:Atlassian Cloud + AI 实战指南

400-666-7732

研讨会回顾

AI驱动的DevOps云端转型:Atlassian Cloud + AI 实战指南

Perforce Helix 分支策略

        因Perforce Helix具有强大的分支管理功能,创建分支不会复制文件,所以快速创立分支、性能稳定、代价很低、理论上可以随便创建(不像SVN,文后有比较)。但是在实际项目管理应用的时候,有经验的项目管理者不会随意地创建分支,如果不是很理解分支管理策略的话,就会造成创建出重复多余没有太大意义的分支,造成开发团队的混乱。下面介绍的是Perforce Helix Core的分支策略,产品经理或项目经理想实现基于测试驱动,主(基)线开发、并行开发的模式研发的话,就可以放心大胆地创建你想好的分支,大幅度提高产品或项目的迭代速度,软件研发平台上面的版本管理工具的瓶颈在Perforce Helix Core面前将彻底被打破。

一、常用开发模式

如图所示,我们可以看到包含了几种主要的分支:

・主分支,主要管理我们的最新的稳定的随时可以执行的代码。

・开发分支,根据项目需求从主分支上建立的的分支,用于项目开发。

・测试分支,用于项目测试的分支。

・发布分支,经过验证的用于发布的分支。

・功能分支,具体的功能开发用,原则上只和开发分支交互。

・故障分支,发生bug时的故障对应分支。

        其中,主分支和开发分支是一直存在的,当一个阶段开发完成,创建测试分支,测试通过后,我们可以创建发布分支,功能分支和故障分支只有在需要的时候才创建。

        例如当我们有一个新需求时,从主分支新建一个开发分支,其中如果有新功能需要开发,我们可以在开发分支上再创建功能分支,当新功能开发、测试完成后再合并回开发分支;开发途中,根据需要可以从开发分支合并到测试分支,测试通过后,合并测试分支到主分支,当一个阶段开发、测试完成后,我们就可以将开发分支合并到主分支,再从主分支创建发布分支。

        在发布版本中发现问题时,我们可以创建故障分支,对应后将结果合并回发布分支,再从发布分支合并到主分支,最后合并到开发分支,从而保证开发代码是最新的。

二、部分发布

        有些情况下,当我们开发了多个功能后,只需要发布其中的部分功能时,我们该怎么对应呢?

        如图所示,我们开发了功能A、功能B、功能C等3个功能,现在只需要发布功能A和功能C,我们在开发分支上对功能A和功能C测试完成后,就可以利用Perforce Helix只将功能A和功能C的变更部分从开发分支合并到测试分支,测试通过后,从测试分支合并回主分支,再从主分支创建发布分支,就可以实现部分功能的发布。

三、利用Stream

        Perforce Helix可以依据上述的分支策略使用通常的分支功能来管理我们的分支,但随着分支的增加,我们很难掌握项目中所有分支之间的关系。

        为了便于我们在开发中更好的使用分支,Perforce Helix为我们提供了Stream功能,Stream为我们提供了可视化的分支管理模式,能清晰的了解各个分支之间的关系,使我们能随时掌控项目的所有分支的情况,从而提高我们的开发效率。

如图所示,这是按照前面所讲的分支策略做成的Stream,我们可以看到,Stream提供了几种分支类型:

  •  主Stream,分支策略的主分支使用此类型

  •  开发Stream,分支策略的开发、测试和功能分支使用此类型

  •  发布Stream,分支策略的发布分支使用此类型

  •  任务Stream,短期间使用,分支策略的故障分支可以使用此类型

注:Stream和Stream之间的线表示了Stream间的关系,箭头表示了Stream间代码可以合并的方向,通常开发Stream只能将发生的故障合并到主分支。

        在这个图上,我们能看见项目里所有Stream间的关系,其中,任务Stream完成后,可以将任务Stream改为需要的Stream类型,如图:当故障对应完后,Task Stream的rel-bug变更为Release Stream的release1.1。

四、Stream案例  

 使用Stream可以方便的根据需要增加变更Stream。

  以下是在运用中Stream的变迁案例:

    如图所示:

(1)项目刚开始,规模较小时,我们只需要有一个Main stream。

(2)开发测试到一个阶段后,有可以发布的版本时,我们可以创建一个发布stream rel1.0。             

(3)在rel1.0里发现有故障时,我们可以创建一个任务stream rel1.0-bug来对应。

(4)当故障对应完成后,将任务stream变更为发布stream rel1.1。

(5)有开发新的需求时,我们创建一个开发stream dev2.0。

(6)开发完成,合并到主分支后,我们可以再创建一个发布stream rel2.0 。

五、SVN比较

        首先,SVN没有Stream功能,只能用通常的分支管理方法,当分支增多时,分支关联关系难辨,无法可视化,管理会变得越来越困难。

        其次,SVN对大文件,大数据量文件的支持不太好,随着文件增多,提交履历增多,分支增加,SVN的操作速度会越来越慢,甚至拉分支会途中失败,合并途中失败更多。这样基本上现场无法实现上面说明的基于主线模型或测试驱动模型的代码管理,成为研发工具链平台实现高效的严重瓶颈的链节点。

分享到:
关于龙智

龙智DevSecOps解决方案

龙智深耕DevSecOps相关领域近十年,集成DevOps、ITSM、Agile管理思路及该领域的优秀工具,提供软件研发生命周期管理解决方案,以及实施、培训、升级、数据迁移、定制开发、运维等服务。

龙智致力于帮助企业实现软件开发运营一体化,并确保安全防护融入软件研发的整个生命周期中。龙智提供从产品规划与需求管理、开发,到测试、部署以及运维全生命周期的解决方案与管理工具,帮助企业科学、高效、安全地管理软件开发,更快、更好地交付软件产品。

近年来,龙智团队潜心开发,先后帮助金融、通信、互联网、汽车、芯片、游戏、医疗等行业的1000多家企业促进开发安全运营的一体化的实践。 秉承着打造开放式DevSecOps的理念,龙智与国外其他多家DevOps工具顶级厂商如Atlassian、Perforce、Mend(原WhiteSource)、CloudBees、SmartBear等合作,将国际市场上先进的工具引入中国市场,帮助企业打造量身定制的DevSecOps解决方案、ITSM解决方案,助力企业高效开发与运维。

我们的自研产品包括Confluence水印插件,Timewise-Jira计划及实际工时管理插件,Jira服务台企业微信应用插件等;我们还与全球DevOps领域领先的企业建立了合作伙伴关系,我们是:

· Atlassian全球白金合作伙伴

· Perforce中国授权合作伙伴

· Mend (原WhiteSource)中国授权合作伙伴

· CloudBees中国授权合作伙伴

· SmartBear中国授权合作伙伴