svn merge在使用不同代码库从分支到分支合并期间的行为方式

时间:2014-07-08 17:38:21

标签: svn merge mergeinfo

我们在SVN中有不同的分支,并在分支之间进行svn合并。由于我们的代码是增量的,因此每个分支几乎相互关联。假设一次有大约5个分支(分支1,分支2等),并且分支X在某个时间线合并到分支Y,并且两个分支也有自己的代码开发:

  • 分支1 =代码库A(来自生产中的先前分支)
  • 分支2 =代码库A +代码库A自身的更改

现在,如果分支3还具有自分支1的代码库,并且具有自己的更改,即(代码库A +分支1更改+分支3更改)。 分支4(从分支1创建并且也有自己的更改)

  • A)现在如何将分支2合并到分支3中,避免代码冗余和合并问题。**
  • B)另外,我想将分支3合并到分支4中,同时保持分支3的更改。

目前我正面临着在同一文件中删除代码和重复代码的问题。

面临的问题

有时,未处于冲突状态的文件会在文件中获取两次代码内容。并且

分支3和分支4的情况

在分支4中删除的

代码在分支4中以某种方式再次可见 尽管合并是通过前向方法完成的(branch1 - > branch2 - > branch3 - > branch4)

我们每次尝试保持相同的基数,但仍然会遇到上述问题。 我想学习如何在上面的场景中进行合并。请建议您的输入。任何具有svn merge实用知识的人都会非常有帮助。

PS:我已经研究过合并最佳实践,但现在已经开始采用明确的方法。我知道合并的基本方法,但从未在像这样的复杂场景中合并

2 个答案:

答案 0 :(得分:0)

您需要考虑分支策略。看起来有点复杂。四个分支代表什么?它们是您添加的特殊功能吗?为什么周期性合并?

让我们指定一个分支(分支1)作为集成流。这是所有工作的地方。这是发布的地方。分支2,分支3和分支4将是功能分支。您要添加功能的分支。在这种情况下,所有合并将在分支1和其他分支之间进行。您不会在任何其他分支之间合并代码。

已将分支与拥有孩子进行比较。如果你有一个,你最好准备好好好照顾它。你必须观察它并保持它。

这是我尝试将分支保持在最低限度的原因之一。我们所有的工作都是在trunk上完成的,我在发布时间附近进行分支,以允许一些开发人员完成即将发布的版本,而其他开发人员则在未来的版本上工作。一旦发布完成,我们会对该分支说“au revoir”(除非我们需要修补)。

偶尔,我会创建一个功能分支。这比较棘手,因为我们必须使该功能分支与主干保持同步。这并不难,但开发人员必须记住定期这样做。否则,我们都在干线上工作。

其他网站一直使用功能分支,但必须记住将其集成分支(或主干)合并到这些分支中(以使功能分支保持最新),并且要小心将功能分支合并到主干中(使用不同的合并算法)。

答案 1 :(得分:0)

  1. 您尝试实施"每个任务分支"流程。没关系,但选择的工具 - 不行
  2. Subversion中的所有分支都拥有相同的权限 - 您可以将任何分支与任何方向合并(如果确实需要)
  3. SVN 1.8+将为您提供一些的好处
  4. 对于长期分支机构,密集分支和主动使用跨分支合并(最少头痛)您选择了相当糟糕的SCM - 任何VCS合并为"一等公民"将是更好,更有用的选择:拥有SVN背景似乎是Mercurial