源码主干分支开发四大模式

作者:张克强    作者微博:张克强-敏捷307

1,先锋主干多稳定分支;2,守护主干多先锋分支。3,主干无分支;4。守护主干单分支。


一、先锋主干多稳定分支 

得到一个稳定版本号后。将此稳定版本号放到一个新分支上,针对此稳定版本号的修修补补就在这个分支上进行。新功能不在此分支上开发。而在主干上进行新功能的开发。 这是业界採用较多的模式。


稳定分支上的有些改动。比方缺陷修复,须要合并到主干。 但有些特定改动,是不须要合并到主干的。这时须要千万注意,合并准确的文件到主干。

对于不能合并到主干的情况,常见的是再拉一个分支。这个分支专门为少数特定情况而用,但从全局讲,可能会导致太多分支。不同分支间混乱,所以这并不推荐。推荐宁愿採用配置开关。


图片来源于 http://blog.csdn.net/binnacler/article/details/4274486 

比方freebsd的公布就是一个典型的样例。


freebsd的主干永远是current,也就是包含全部最新特性的不稳定版本号。然后随着新特性的逐步稳定,达到一个公布的里程碑以后,从主干分出来一个stable分支。

freebsd是每一个大版本号一个分支。

也就是说4.x,5.x。6,x各一个分支。每一个公布分支上仅仅有bug改动和现有功能的完好。而不会再添加新特性。

新特性会继续在主干上开发。当稳定分支上发生的改动积累到一定程度以后。就会有一次公布。公布的时候会在稳定分支上再分出来一个 release分支。

以6.x为例,就会有6.0,6.1,6.2…等公布分支。【此段摘自于网络 http://thinkernel.bokee.com/4518935.html 】


二、守护主干多先锋分支

得到一个稳定版本号后,拉出先锋分支,在分支上开发新功能。在主干上进行修修补补。

当先锋分支通过一定的測试之后,合并到主干。能够同一时候有多个先锋分支,不同的功能能够拉不同的分支,不同公布时间点而又要同一时候开发的内容必须在不同的分支上。

从公布的角度讲,更推荐将肯定一起公布的内容放在同样的先锋分支上。

主干上永远是稳定版本号,能够随时公布。bug的改动和新功能的添加,全部在分支上进行。并且每一个bug和新功能都有不同的开发分支。全然分离。

而对主干上的每一次公布都做一个标签而不是分支。分支上的开发和測试完毕以后才合并到主干。
这样的公布方法的优点是每次公布的内容调整起来比較easy。

假设某个新功能或者bug在下一次公布之前无法完毕,就不可能合并到主干。也就不会影响其它变更的公布。

另外,每一个分支的生命期比較短,唯一长期存在的就是主干。这样每次合并的风险非常小。每次公布之前,仅仅要比較主干上的最新版本号和上一次公布的版本号就能够知道这次公布的文件范围了。

【此段摘自于网络 http://thinkernel.bokee.com/4518935.html 】

三、主干无分支

仅仅有主干,没有分支,全部紧急正常的改动全在主干上。开发了一半的东西假设要上线的话,要巧妙的藏起来。对程序的结构提出了高要求。分分合合要方便,开关配置是少不了的了。

单从效率讲。这是最高效的模式了。要有不少配套措施才干够。常见的配套措施:每日集成(编译部署測试),静态代码检查,測试不仅仅有单元測试,还有接口測试。还有界面自己主动化測试。


四、守护主干单分支

仅仅有一个分支,紧急改动在主干上进行,正常开发在分支上进行,主干和分支依据须要双向同步。

须要採用与主干无分支同样的配套手段。并且在主干和分支上都须要建设每日集成。甚至持续集成。



以上四种模式是主干分支开发的典型情况。
在实际应用中,前2种更加常见一些,
主干无分支开发时碰到极其特殊情况时,不排除拉短分支。
而在第一个模式先锋主干稳定分支开发时与第三个模式主干无分支,是能够在一段时间内相互转换的。


參考资料
1,代码的分支管理策略 http://thinkernel.bokee.com/4518935.html 




posted @ 2015-12-22 14:32  hrhguanli  阅读(5703)  评论(0编辑  收藏  举报