svn分支合并树冲突问题(使用乌龟)

时间:2013-05-03 21:43:42

标签: svn tree tortoisesvn conflict

我已经阅读了很多很多内容,但无法弄清楚问题是什么,而且非常奇怪。 我正在为客户端使用1.7版本的服务器和最新的乌龟版本(1.7)。这是场景:

  1. 我创建了一个父分支,然后从中创建了一个子分支。 所以,PARENT_BRANCH - > CHILD_BRANCH
  2. 在CHILD_BRANCH中添加新目录并提交。
  3. 使用tortoise将所有更改从CHILD_BRANCH合并到PARENT_BRANCH。我使用'合并一系列修订'选项并没有在选项中指定任何修订,所以基本上让svn识别并管理要合并的修订。
  4. 合并后,将在PARENT_BRANCH中创建新目录。
  5. 从PARENT_BRANCH合并回来 - > CHILD_BRANCH。
  6. 我在新目录上遇到树冲突,其中包含尝试添加的目录的错误已经存在。
  7. 当然,目录是子分支中的目录,因为它最初来自于它。我虽然svn 1.5+轨道使用merge-info合并,但应该知道这是目录所在的分支,不应该抛出树合并错误。

    知道发生了什么,我该如何解决这个问题? 我给出的示例仅适用于1个目录,但实际上有很多目录和文件,因此手动逐个进行需要数小时。

2 个答案:

答案 0 :(得分:6)

问题是CHILD和PARENT都有不同的修订版,它们添加了相同的文件夹。儿童对第4步中的修订没有任何了解。

在从CHILD到PARENT(您的第4步)的每次合并之后,您需要立即对CHILD记录它具有从CHILD到PARENT的合并修订版。你可以通过将PARENT中的修订版合并到CHILD并在tortoisesvn中检查这个标志:

enter image description here

subversion branch reintegration上阅读此帖。

答案 1 :(得分:2)

SVN是一种可以以多种不同方式使用的工具。有些用例得到了很好的支持,有些则没有。两个分支之间在两个方向上连续合并属于后一类。

因此,SVN不适合所有项目。但是,它对大多数项目都很有效,因为不需要在两个方向上合并更改。 SVN的典型工作流程如下:

创建一个功能分支,对功能分支进行更改,并将原始分支的所有更改合并到功能分支,以便功能分支包含来自原始分支的所有内容以及仅存在于此功能上的一些其他功能。特色功能分支。一旦功能分支完成,它就会与原始分支重新集成,然后关闭。

SVN很好地支持这个工作流程,并且在大多数项目中工作得非常好。