如果分支策略包含 n 功能分支,“主”(主线)和“集成”分支。集成分支的目的是什么?为什么不能在功能分支本身上执行测试和集成?
答案 0 :(得分:16)
因为它是一个功能分支。它应该只包含与一个功能相关的更改。在最终推送到主服务器之前,集成分支是将多个功能组合在一起进行测试的地方。
当然,你没有 以这种方式分开事物。您可以在功能分支上进行集成,就像您可以在master上完成所有工作一样。但关注点分离是一件好事。
答案 1 :(得分:6)
更具体地说明为什么"分离是好的":集成分支的目的是确定新功能是否不仅可以自己工作,还可以与其他新功能结合使用。这意味着它们可能不会,这些功能可能会导致需要一段时间才能解决的冲突。
但是,您仍然可能希望开始将新功能的子集部署到主线分支,因此您不会阻止所有功能,因为它们之间存在不兼容性。
现在,如果您已经将功能分支合并到一起,那么您将很难将它们分别合并到主线中。这并非完全不可能,但它确实很麻烦(我已经尝试过)。
如果您的要素分支包含主要代码流失,或者它们与正在处理的代码区域有很大重叠,您甚至可能希望进一步采用这个想法,并在合并它们之前使用集成两个要素的分支在任何其他地方,包括全球整合分支,i。即有多个级别的集成。当然,这通常不是一个理想的情况,但是你可能无法避免它,如果你对集成分支很慷慨,那么产生的冲突可以更容易解决。
答案 2 :(得分:2)
我经常看到需要“集成”分支的一个主要原因是当您的功能分支本身不可测试时。根据我的经验,这通常是由于数据库依赖性。或者,考虑一个由数据库支持的网站项目......让我们说它是一个托管在BEA Weblogic中的JSP应用程序,后面是一个60GB的Oracle数据库;需要大量硬件才能为每个功能分支提供自己的BEA Weblogic和Oracle实例进行测试。相反,通常更容易开发到尽可能最好的功能分支,但进入完整QA测试的集成分支,其中QA需要在完整的Web服务器和数据库上执行。