TortoiseSVN Tree Conflict:无法选择远程文件

时间:2017-05-22 16:52:59

标签: merge tortoisesvn tree-conflict

以下是该方案:

  • User1,Branch1:添加" abc.def&#34 ;;的提交。
  • User2,Branch2:添加" abc.def" (文件名相同,但文件中有更多细节);的提交。

现在,User1想要合并" abc.def"的更新版本。文件。所以(使用TortoiseSVN 1.7.10),User1从Branch1的工作副本开始,选择Merge... - > Reintegrate a Branch,然后选择Branch2并选择Merge。可以预见的是,#Tree树冲突"结果,用这个文字:

  

最后一次合并操作试图添加文件' abc.def'从Branch2,但该文件已在本地添加。   您想如何解决这一冲突?

但唯一的选择是标有Keep the local file的单个按钮。 没有选择远程文件的选项,这是User1真正想要的文件。

enter image description here

我在这里做错了什么,我该如何解决?更具体地说,如何将User2的文件版本转换为Branch1?

(当然,我确定User1可以在合并之前手动删除文件,但这会消除User1可能想要保留的任何历史记录。此外,它只是一个笨重的工作流程,特别是在那里在这种困境中有很多文件。)

不幸的是,TortoiseSVN documentation on Tree Conflicts

中甚至没有提到这种情况

更新:

除了选择" Reintegrate a Branch"我也试过" Merge a Range of Revisions"和" Merge two different trees"。对于后一种情况,我选择远程分支(Branch2)作为"开始"并将本地分支作为目标(Branch1;选择Revision previous 添加文件。)我在所有情况下得到了相同的结果:Tree Conflict没有选择User2版本的选项文件。

更新#2:

根据the documentation,合并进度对话框中应该有一个名为Merge non-interactive"的复选框,如果未选中,则会打开"合并冲突回拨对话框"在合并期间。但是,我在合并过程中找不到任何此类复选框。它在哪里?

3 个答案:

答案 0 :(得分:1)

我可以通过以下程序在TortoiseSVN 1.9版本中从一个分支合并到另一个分支。

<强>设置

使用测试存储库,我执行了以下步骤:

  1. 创建一个分支,“第一个”

  2. 在新分支中创建内容为“FIRST”的文件“doc.txt” first doc

  3. 添加文件并将其提交到新分支

  4. 创建一个分支,“第二个”

  5. 在该分支中创建内容为“SECOND”的文件“doc.txt” second doc

  6. 添加文件并将其提交到新分支

  7. 所以我的结构如下:

    branches/
        first/
            doc.txt => "FIRST"
        second/
            doc.txt => "SECOND"
    

    <强>合并

    在此示例中,我的目标是将second/doc.txt的内容放入第一个分支。

    1. 右键单击first分支文件夹,然后选择TortoiseSVN&gt;合并...

    2. 选择“合并两棵不同的树”
      merge dialog

    3. 使用/branches/first的网址填写“发件人”框,并使用/branches/second的网址填写“收件人”框。
      enter image description here
      (这是我最初被绊倒的地方 - 我认为这是相反的!The docs解释:“这可能听起来不对,但请记住,行李箱是您想要添加分支变化的起点。 “)

    4. 如果需要,点击下一步并尝试测试合并。它应该显示“doc.txt”被替换,没有树冲突。对于此示例,默认合并选项很好 merge options

    5. 合并并检查first/doc.txt的内容 - 现在应该是“SECOND”。
      merge results

    6. 运行更新,然后提交first文件夹以将合并保存到存储库!
      commit results

    7. 完整日志:
      repository log

答案 1 :(得分:0)

Reintegrate a branch vs merge a range of revision

我认为您要做的是首先合并一系列修订,然后将分支合并回树中。

答案 2 :(得分:0)

有一个名为

的对话框
  

合并冲突回调对话框

enter image description here

Relating this issue

应该出现Merge Conflict Callback Dialog - 通过&#34合并多个修订版时;合并一系列修订版&#34; - 合并时通过&#34;重新整合分支&#34;

目前,合并冲突回调对话框只出现在 第一个案例。

它将包含在即将发布的1.6.0版本中。

这允许您选择存储库更改而不是