当前位置:  开发笔记 > 前端 > 正文

分支策略

如何解决《分支策略》经验,为你挑选了6个好方法。

我工作的公司开始遇到他们目前的分支模型的问题,我想知道社区有哪些不同的分支策略?

对于不同情况,有什么好的吗?贵公司使用什么?它们的优点和缺点是什么?



1> jcoby..:

这是我过去使用的方法,取得了很好的成功:

/ trunk - 流血的边缘.下一个主要版本的代码.在任何给定时间可能会或可能不会工作.

/branches/1.0,1.1等.代码的稳定维护分支.用于修复错误,稳定新版本.如果是维护分支,则应编译(如果适用)并准备好在任何给定时间进行质量保证/运输.如果是稳定分支,它应该编译并且功能完整.不应添加任何新功能,不进行重构,也不需要进行代码清理.您可以添加前置前缀以指示稳定分支与维​​护分支.

/支链/ cool_feature.用于高度实验性或破坏性的工作,可能会或可能不会进入主干(或维护分支).无法保证代码编译,工作或以其他方式表现得非常好.在合并到主线分支之前应该尽可能持续最短时间.

/tags/1.0.1,1.0.2,1.1.3a等用于标记打包和发布的版本.永远不会改变.制作任意数量的标签,但它们是不可变的.


你提出了一个非常好的模型.我公司执行的一项政策,我认为这是相当普遍的,因为主干应该始终构建并通过所有测试.所以你在你的模型下说它"可能有效也可能无效".有不同程度的稳定性,我认为强制执行主干应该始终建立的规则并且自动测试应该总是通过是一个很好的规则.

2> Ryan Duffiel..:

我非常鼓励阅读Eric Sink对此事的看法:

第7章:分支机构

我和Eric一样,更喜欢他谈到的"文件夹"式分支.


Eric说:"简单的改变.正如我在上面提到的"Eddie"场景中所做的那样,不要为每个错误修复或功能进行分支." 但随着新SCM的出现,这已不再适用.SVN的人经常这样说,直到他们实施适当的分支...... GIT人们永远不会这样说......但通常某个版本控制背后的人会说他们不能做的事情是不值得的......: - (

3> Brian Sadler..:

对于分支模式的母亲,请参阅Brad Appleton的流线:并行软件开发的分支模式.这是繁重的责任,但我没有看到任何超越它的分支知识的广度和深度.



4> Andrew Burns..:

我们的存储库如下:

/trunk
/branches
/sandbox
/vendor
/ccnet

/ trunk是你的标准,前沿发展.我们使用CI,因此必须始终构建并通过测试.

/分支 这是我们放置"制裁"的大变化的地方,即我们知道的东西会变成主干但可能需要一些工作并且会破坏CI.此外,我们在维护版本上工作,这些版本都有自己的CI项目.

/ sandbox 每个开发人员都有自己的沙箱,还有一个共享的沙箱.这是为了"让我们的产品添加一个LINQ提供程序"这类任务,当你不做你真正的工作时,你会这样做.它可能最终进入主干,它可能不会,但它存在并受版本控制.这里没有CI.

/ vendor 标准供应商分支用于我们编译的项目,但它不是我们维护的代码.

/ ccnet 这是我们的CI标签,只有CI服务器可以在这里写.Hindsight会告诉我们将其重命名为更通用的内容,例如CI,BUILDS等.



5> pablo..:

    一个用于主动开发的分支(/ main或master,取决于行话)

    每个维护版本的一个分支 - >它只会收到很小的修复,而所有主要的开发都会转到/ main

    每个新任务的一个分支:创建一个新分支,以处理Bugzilla/Jira/Rally上的每个新条目.经常提交,使用英寸卵石签入自行记录更改,并在完成并经过充分测试后将其合并回"父"分支.

请查看此http://codicesoftware.blogspot.com/2010/03/branching-strategies.html以获得更好的解释



6> hfrmobile..:

第一件事:KISS(保持简单愚蠢!)

/branches
  /RB-1.0 (*1)
  /RB-1.1 (*1)
  /RB-2.0 (*1)
/tags
  /REL-1.0 (or whatever your version look like e.g. 1.0.0.123 *2)
  /REL-1.1
  /REL-2.0
/trunk
  current development with cool new features ;-)

*1)保持版本可维护 - 例如,服务包,修补程序,错误修正,如果需要和/或需要可以合并到主干)*2)major.minor.build.revision

拇指规则:

    不需要签出Tags文件夹

    在发布分支中只有少数编码(使合并更简单) - 无需代码清理等.

    永远不要在标签文件夹中编码

    切勿将具体版本信息放入源文件中.使用占位符或0.0.0.0,构建机制将替换为您正在构建的版本号

    永远不要将第三方库放入源代码控制中(也没有人会将STL,MFC等库添加到SVN ;-))

    只提交编译的代码

    更喜欢使用环境变量而不是硬编码路径(绝对路径和相对路径)

--hfrmobile

推荐阅读
小白也坚强_177
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有