在我的公司,我们正在使用Subversion。我们的项目开发流程包含一个“实时”分支代码(这是我们的实时Web服务器上的代码),一个针对较小项目的通用开发分支,然后每个较大的项目都有其独立的分支。在任何特定时间,我们通常至少有两个大型项目正在开发中。将这些合并回到活动分支可能是一种痛苦,但更大的痛苦是大型项目1上线后,大型项目2将在晚些时候上线,而合并过程只是......凌乱。Git与颠覆多个大型开发分支
我一直在SVN中做的事情是每天从开发分支中生活(所以发生任何错误修复等)。但是较大的项目合并过程仍然很混乱,我想知道Git是否会更清洁。作为SVN发生的一件坏事的一个例子,我们将在开发中使用一个小功能,将其合并到生活中,然后当执行活动后退时,SVN会尝试再次将该功能合并回dev(导致冲突),除非我们手动取消选择合并中的提交。从我的理解中,Git足够“聪明”,足以知道提交是在dev中产生的,因此它不会尝试将它合并回来......但我的理解可能是错误的。我还听说Git更擅长自动处理复杂的合并,就像我们正在做的那样。
因此,第一个问题是:Git是否比SVN明显好于我们正在做的事情,或者我们是否仍然可能遇到相同的问题,并且如同毛茸茸的合并?
第二个问题:是否有其他集成方法可能对我们的方案更好?特别是,我正在阅读一篇关于promiscuous integration的文章,虽然看起来不错,但看起来好像越来越难以让更多的项目同时进行。但是,我再也不指望我们同时拥有三个以上的大项目,通常只有两个。对于我们的许多项目来说,持续集成并不是一种选择,因为它们往往是全有或全无的项目,或者如果被部分推送(例如,我们最近重新设计我们的结账流程),会对用户造成冲击。对于我们的情况,This article也是一种很好的方法。
检查[本问答](http://stackoverflow.com/a/10340877/236871) ,基本上Git在合并时比SVN好,因为它们如何存储信息以及如何执行合并过程。 Git存储完整的快照,SVN存储增量/差异。在合并时,Git进行3路合并,SVN重新应用补丁/差异。 – KurzedMetal 2013-03-01 16:34:44
有一个关于高级分支和合并的免费网络研讨会。 http://go.wandisco.com/advanced-branching-merging。html – vinnyjames 2013-03-01 23:12:30
作为一个说明,我们已经转移到Git,并发现它好多了 - 合并期间几乎没有冲突。主要的难点在于,当我们将一些代码合并到master时,发现一个严重的bug已经逃脱了QA,在master进行了进一步的合并/提交之后。在Git中支持这一点比在SVN中困难得多。但总的来说,Git对我们来说比SVN更好。 – 2013-11-20 16:38:06