Svn 颠覆、合并

Svn 颠覆、合并,svn,merge,branching-and-merging,Svn,Merge,Branching And Merging,首先让我先说一句,我以前在这里问过类似的问题,但从来没有得到一个很好的答案来解决我缺乏知识/问题 首先,让我从一个分支策略建议开始。这就是我们的工作,我很高兴听到其他的评论,以及为什么这很糟糕。但要明白,它通常对我们有效 我们有1种产品。为了这个例子,让我们称之为“产品”。我们运行2个并发开发周期。每周的维护周期,我们在其中修复非紧迫的bug,以及每两周的sprint。从主干中创建了两个分支,分别称为“Sprint”和“Maintenance”(我知道这两个分支的名称选择令人震惊!)。此外,对于

首先让我先说一句,我以前在这里问过类似的问题,但从来没有得到一个很好的答案来解决我缺乏知识/问题

首先,让我从一个分支策略建议开始。这就是我们的工作,我很高兴听到其他的评论,以及为什么这很糟糕。但要明白,它通常对我们有效

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

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

所以我将发出命令:svnmerge--reintegrate 虽然有些文件会更新,但在完全相同的文件上(通过WinMerge)会有冲突。我不知道是什么导致了这些冲突


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

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


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

您可能只需要从主干合并回分支,而不是创建新分支。。。大概是这样的:

树干 ---创建Sprint

---将Sprint合并到主干中
---将主干合并到Sprint中

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

MM促进的频繁合并将减少合并冲突的发生,当冲突发生时,MM提供了一种基于web的机制来解决冲突

仅供参考,它是一种商业工具。我听说过的唯一一个开源工具MergeFairy做的与此类似的事情是MergeFairy,但我认为MergeFairy的开发并不十分活跃


查看。

如果没有导致此问题的SVN命令序列和相应编辑的具体示例,这将是一个非常棘手的诊断问题……此外,这可能是一个行尾问题吗?在您的visual diff工具中,行尾的更改可能看起来不可见。不幸的是,由于我们使用的是Atlassian studio,SVN是我们一直使用的工具。@llaskin OK,所以请使用功能分支。SVN实际上是一个相当可靠的VCS-你应该尝试使用原始rcs、SCCP或PVC,仅举三个昨天的可怕VCS。那么每根树枝都从树干上分支了?或者我应该保留sprint和maint分支,并从sprint/maint分支分支生成功能分支吗?无论我走哪条路,我都能看到这很快变得非常复杂。如果分支很小,这并不复杂-功能分支可能只使用几个小时。但我可能不是最好的家伙,因为我怀疑你没有运行一个C++应用程序商店。@ Lasask:一旦你做了<代码> Svn合并——重新整合,你不再合并的分支不再被使用,因为你不再能从它中自动重新融合。看见