SVN – 无法将分支合并回树干 – 无数的树冲突

我有我认为是一个简单的情况 – 使用TortoiseSVN:

1)我创build了一个应用程序的分支(B2)(用于实现图像精灵和JAWR)。

2)干线上的testing和开发正常进行。

3)我在过去几天重新build立了这个分支:

3.1)合并中继(按修订版本)到我的分支-B2工作副本,解决合并过程中的冲突。

3.2)(在testing分支-b2之后),我提交了基于分支的分支-b2。

这一切都如我所料。 但是将分支合并到后备箱中是与我的方式:

4)在分支-b2中提交的所有更新之后; 我确定我在trunk和branch-b2上做了一个SVN更新。

5)然后,我尝试从分支-b2合并(修订范围)到主干。 但是,对于已添加到主干的任何新文件,随后在重新分支时将其添加到分支b2中,则会发生树状冲突。 我不确定解决这些冲突的正确方法。

我见过的最典型的build议是从主干中删除树冲突文件,然后合并分支; 或删除整个中继,将分支文件复制过来,然后将其作为新版本提交到中继。 这两种select似乎都不是一个好主意 – 首先是一种痛苦,而且两者似乎都会丢失文件修订历史。

我做错了什么,我该如何解决?

听起来就像你使用1.5以前的合并风格,并尝试将分支重新集成到主干。 在这种情况下,你想要做的是首先确保所有的树干更改已合并到分支,然后而不是将分支范围合并到指向树干的工作副本,您想合并“从树干@HEAD TO分支@ HEAD“,工作副本指向主干。 在本质上:

“给我所有的变化,我需要使树干相同的分支”。

如果您已经将所有树干更改合并到了分支,这将起作用,因为树干和分支之间唯一的区别在于分支中所做的更改。

合理? 🙂

我调查了同样的问题。 Tortoise SVN 1.6.5是“function”。 TortoiseSVN 1.5可以正常工作(SVN 1.5)。 TortoiseSVN 1.6.5当重新绑定添加文件从主线为新(不保存合并历史logging)。
重新整合分支机构将这些文件视为与主线冲突。

我通过使用TortoiseSVN 1.6“重新集成分支”的function解决了这个问题。 它专门用于function分支。

– Alexey Korsun

我真的不知道上面的解决scheme是如何工作的,所以我的工作是不同的。 首先我确定分支包含了主干的所有变化。

1)我得到了一个新的树干副本。 2)我使用乌龟svn导出将分支导出到临时位置。 3)我用Windows资源pipe理器将整个分支树复制到树干,并覆盖所有文件4)我使用了龟检查修改命令,并包括所有未经检查的文件checkbox。 5)我select了所有的文件,并点击添加。

您应该使用尚未构build的解决scheme,以便未修复的文件不包含输出。

我不能等到我们升级到1.5+

使用TortoiseSVNselect“合并版本范围”选项的“合并版本”。 这将防止每个合并操作再次出现相同文件的树冲突。

这里有一些更多的信息来帮助@Rytmis答案,这有助于我保持这个直线。

制作树干的高级步骤与分支或标记完全相同:

  1. 从干线结帐。
  2. 使用主干的工作副本,从主干合并到分支/标记。
  3. 承诺。

示例'svn'命令行命令:

svn checkout <trunk url> cd trunk svn merge <trunk url> <branch/tag url> svn commit -m "<message>" 

我想我解决了这个问题。 1.右键单击您合并的“分支”。 2.点击Tortoise SVN >>合并3.“合并一系列修订”和下一个4. !!!检查“反向合并”! ,从“分支”合并的URL,特定范围“最近合并的修订”,以及Next 5. Next 6. SVN Commite

之后,我可以从分支合并到主干。