我有一个我认为简单的场景 - 使用 TortoiseSVN:

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

2)测试和开发在主干上正常进行。

3)过去几天我通过以下方式多次重新建立分支:

3.1)将主干(按修订范围)合并到我的branch-b2工作副本,解决合并期间的冲突。

3.2)(在测试branch-b2之后),我提交了重新基于的branch-b2。

这一切都如我所料。但是将分支合并回主干对我来说很顺利:

4) 在branch-b2中提交所有更新之后;我确保在 trunk 和branch-b2 上执行 SVN 更新。

5)然后,我尝试将(修订范围)从branch-b2合并到主干中。然而,对于任何已添加到主干并随后在重新设置基础时添加到分支 b2 的新文件,我会遇到树冲突。我不确定解决这些冲突的正确方法是什么。

我见过的最典型的建议是要么从主干中删除树冲突文件,然后合并分支;要么从主干中删除树冲突文件,然后合并分支;或者删除整个主干,复制分支文件,然后将它们作为新版本提交到主干中。这两个选项似乎都不是一个好主意——第一个选项很痛苦,而且两个选项似乎都会丢失文件修订历史记录。

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

有帮助吗?

解决方案

听起来你正在使用1.5之前的合并样式并尝试将分支重新集成到主干中。在这种情况下,您要做的是首先确保所有主干更改已合并到分支中,然后将分支范围合并到指向主干的工作副本,而不是合并“FROM” trunk @ HEAD TO branch @ HEAD"与工作副本指向主干。实质上:

“给我所需的所有更改,使树干与分支相同”。

如果您已将所有主干更改合并到分支,则此方法有效,因为树干和分支之间的唯一区别是分支中所做的更改。

有意义吗? :)

其他提示

我调查了同样的问题。 它是“特征”。在Tortoise SVN 1.6.5。 TortoiseSVN 1.5适用于我们的repositoty(SVN 1.5)。 当重新定位时,TortoiseSVN 1.6.5将主线上的文件添加为NEW(不保存合并历史记录) 并重新整合分支结果,将这些文件视为与主线冲突。

我通过使用TortoiseSVN 1.6“reintegrate branch”的功能解决了这个问题。它专门用于功能分支。

- Alexey Korsun

这里有一些更多的信息可以为@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 export将分支导出到临时位置。 3)我使用Windows资源管理器将整个分支树复制到主干并覆盖所有文件4)我在龟上使用了check for changes命令并包含所有未查看的文件复选框。 5)我选择了所有文件,然后点击添加。

您应该使用尚未构建的解决方案,以便未预见的文件不包含输出。

我等不及升级到1.5 +

在选择“合并一系列划分”时选择合并的修订版本。使用TortoiseSVN的选项。这将防止每次合并操作再次出现相同文件的树冲突。

我想我解决了这个问题。 1.右键单击“分支”。你合并了。 2.单击Tortoise SVN&gt;&gt;合并 3.“合并一系列修订版”接下来 4. !!!检查“反向合并”!!!   ,要从“分支”合并的URL,特定范围“最近合并的修订版本”和“下一步” 5.接下来 6. SVN Commite

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top