原载:http://lanbolin.spaces.live.com/blog/cns!977E13F16FA9E2B5!768.entry
由于惧怕分支可能带来的混乱,有些组织几乎从来不创建分支,甚至会为了避免分支而重新开始一个源码项目。适当地使用分支实际上可以大大地提高开发的效率。
什么时候使用分支?创建分支的一些典型场景或原因:
(1)为了隔离已发布版本的维护与主线的开发,可以创建 版本分支,在该分支上进行已发布版本的Bug排除,而日常开发工作则在主线上进行。
(2)在版本发布前所进行的各种测试过程中,有些组织会要求进行代码冻结,以避免可能造成的混乱。可以通过创建 集成分支而无需冻结代码,开发人员可以不受影响地在主线上进行新特性的开发,测试Bug的排除则在该分支上进行。
(3)进行一些影响比较大的新特性开发或进行较大范围的代码重构时,可以创建 任务分支,以减少对主线开发的影响(因为我们要尽可能地保证主线的稳定性)。
(1)为了隔离已发布版本的维护与主线的开发,可以创建 版本分支,在该分支上进行已发布版本的Bug排除,而日常开发工作则在主线上进行。
(2)在版本发布前所进行的各种测试过程中,有些组织会要求进行代码冻结,以避免可能造成的混乱。可以通过创建 集成分支而无需冻结代码,开发人员可以不受影响地在主线上进行新特性的开发,测试Bug的排除则在该分支上进行。
(3)进行一些影响比较大的新特性开发或进行较大范围的代码重构时,可以创建 任务分支,以减少对主线开发的影响(因为我们要尽可能地保证主线的稳定性)。
成功使用分支需要把握的几个原则:
(1)尽可能频繁地合并。当分支处于一个稳定点的时候,就可以考虑合并了。频繁的合并可以有效地较少冲突。
(2)确保并行的活动分支数尽量的少。并行的活动分支数越多,分支合并到主线的冲突就会越多。
(3)避免必须合并的长期分支。分支时间越长,冲突也就越多,将大大增加合并的开销。
(4)减少分支的复杂度,尽可能地避免在分支上再建分支。
(5)直到不得不创建分支的时候才创建分支。过早地创建分支或无谓地创建分支,都会带来麻烦。
可以看出,以上几个原则都围绕着这样的主题:减少分支可能带来的冲突,降低合并的开销。
(1)尽可能频繁地合并。当分支处于一个稳定点的时候,就可以考虑合并了。频繁的合并可以有效地较少冲突。
(2)确保并行的活动分支数尽量的少。并行的活动分支数越多,分支合并到主线的冲突就会越多。
(3)避免必须合并的长期分支。分支时间越长,冲突也就越多,将大大增加合并的开销。
(4)减少分支的复杂度,尽可能地避免在分支上再建分支。
(5)直到不得不创建分支的时候才创建分支。过早地创建分支或无谓地创建分支,都会带来麻烦。
可以看出,以上几个原则都围绕着这样的主题:减少分支可能带来的冲突,降低合并的开销。
参考书籍:《软件配置管理模式》