Freud's Blog

Stay hungry, stay foolish. 少年辛苦终身事,莫向光阴惰寸功。

研发中的代码管理模型(Trunk-based or Feature-Branch-Based)

Posted on By Freud Kang

代码管理类型

代码管理模型的产生是由于企业中项目开发通常不是一个人,而是一个或者多个团队完成的。我们知道一个人管理自己的文件是比较方便的,但是当多个人要维护多个文件的时候,事情就会变得复杂起来。 那我们就需要找出相应的解决办法,尽量减少多人协作开发中的代码冲突,减少代码管理工作,让大家能相对方便地在团队内部管理自己的代码。

当前在项目中主流的开发类型包括基于主干的开发和基于分支的开发两种。从名字上我们就可以看出来,一种是鼓励大家在一个固定的分支上进行开发,另一种是鼓励大家创建新的分支,以下是这两种开发模式的主要区别。

基于主干开发

01_trunk_based.png

特点

  • 主干开发,主干发布
  • 适用于需要发版的项目(如客户端开发)
  • 优先解决构建失败,而不是功能实现
  • 适用于瀑布模型
  • 依赖于团队沟通
  • Our Code

优点

  • 快速解决代码冲突
  • 便于管理版本号
  • 团队紧密沟通

缺点

  • 依赖团队沟通
  • 代码管理复杂度随着团队规模的增大呈指数级别增长
  • 开发缓慢
  • 持续集成不是基于某个已完成的功能
  • 未完工代码呈现在了团队合作分支中,可能会导致其他人构建失败

基于分支开发

02_feature_branch_based.png

特点

  • 分支开发,主干发布
  • 适用于频繁发布的项目
  • 适用于Web软件的开发。
  • 适用于敏捷模型

优点

  • 专注于功能开发
  • 快速和频繁发布
  • 完全测试过的代码才允许进主干
  • 分布式团队友好

缺点

  • My Code
  • 功能开发时间过长,可能导致需要解决大量代码冲突。