颠覆,融合

时间:2011-06-08 19:47:16

标签: svn merge branching-and-merging

首先让我先说一下,我之前曾问过类似的问题,但从未得到解决我缺乏知识/问题的好答案。

首先,让我以分支策略提案开始。这就是我们的工作,我很高兴听到其他评论,以及为什么这很糟糕。但要明白它一般适合我们。

我们有1个产品。为了这个例子,我们称之为“PRODUCT”。我们运行2个并发开发周期。每周维护周期,我们修复非紧迫的错误,以及每两周一次的冲刺。有2个分支从干线创建称为“Sprint”和“维护”(我知道令人震惊的名字选择!)。此外,对于紧急/阻止问题,修复程序直接进入主干并在测试后推送到生产环境。

当我尝试将sprint或维护重新集成到主干中时,10次中有9次我得到了大量的冲突。在其中一个分支中从未处理过的文件。这导致大量的手动合并,这很糟糕,并且往往会导致更多的问题。

所以我将发出命令:svn merge --reintegrate http://repo/Sprint 虽然有些文件会更新,但我会对完全相同的文件(通过WinMerge)产生冲突。我不知道是什么导致了这些冲突。

我怎样才能停止这些荒谬的冲突?

3 个答案:

答案 0 :(得分:2)

一个答案是使用许多小功能分支,而不是两个固定分支。您的问题是来自固定分支的更改会合并,然后您在固定分支上进行一些更改,这些更改似乎与第一个合并冲突,即使它们确实没有。

因此要么使用许多小功能分支,要么切换到像Mercurial或git这样的DVCS,它以比SVN目前更智能的方式处理合并。

答案 1 :(得分:1)

您可能会发现Timpani Software的MergeMagician项目很有趣。它是一个与Subversion(以及Microsoft TFS)一起使用的分支管理和自动合并解决方案。您在分支之间创建发布/订阅关系,然后服务器自动化合并。

随着MM的推出频繁合并将减少合并冲突的发生,当它们发生时,MM提供了一种基于Web的机制来解决它们。

仅供参考,它是一种商业工具。我听过的唯一一个与此有关的开源工具是Merge Fairy,但我不认为Merge Fairy的开发非常活跃。

http://www.timpanisoftware.com处查看。

答案 2 :(得分:0)

你可能只需要从主干合并到你的分支而不是创建新的分支......这样的事情:

中继线  ---创建Sprint

---将Sprint合并为Trunk  ---将Trunk合并为Sprint