【发布时间】:2017-10-22 10:20:41
【问题描述】:
这是场景:
- User1,Branch1:添加“abc.def”;提交。
- User2,Branch2:添加“abc.def”(文件名相同,但文件中有更多详细信息);提交。
现在 User1 想要合并“abc.def”文件的更新版本。因此(使用 TortoiseSVN 1.7.10),User1 从 Branch1 的工作副本开始,选择 Merge... -> Reintegrate a Branch,然后选择 Branch2 并选择 Merge。可以预见的是,会导致“树冲突”,并带有以下文本:
最后一次合并操作尝试从 Branch2 添加文件“abc.def”,但该文件已在本地添加。 你想如何解决这个冲突?
但唯一的选择是标有Keep the local file 的单个按钮。 没有选择远程文件的选项,这是 User1 真正想要的。
我在这里做错了什么,我该如何解决?更具体地说,如何将 User2 的文件版本放入 Branch1?
(当然,我确信 User1 可以在合并之前手动删除文件,但这会抹掉 User1 可能想要保留的任何历史记录。另外,这只是一个笨拙的工作流程,尤其是当这种困境中存在大量文件时.)
不幸的是,TortoiseSVN documentation on Tree Conflicts 中甚至没有提到这种情况
更新:
除了选择“Reintegrate a Branch”之外,我还尝试了“Merge a Range of Revisions”和“Merge two different trees”。对于后一种情况,我选择远程分支(Branch2)作为“开始”,选择本地分支作为目标(Branch1;在添加文件之前选择修订版之前。)我得到了所有情况下的结果相同:树冲突,没有选择文件的 User2 版本的选项。
更新 #2:
根据the documentation,应该有“合并进度对话框中名为Merge non-interactive的复选框”,如果未选中,则应该在合并期间打开“合并冲突回调对话框”。但是,我在合并过程中找不到任何这样的复选框。它在哪里?
【问题讨论】:
-
您可以选择强制合并吗? (我正在运行 1.9,所以我不确定它是否改变了)另外,当您说 User1 已将文件添加到分支时,您的意思是 SVN 添加/提交还是只是在本地创建?
-
@whrrgarbl:不,我不能强制合并。那就是问题所在。你是说这种情况与 1.9 不同吗?至于您的第二个问题:User1 和 User2 都创建文件并添加/提交。 (更新了我的帖子以澄清。)
-
@whrrgarbl:如果 1.9 确实修复了这个缺陷,并且您可以通过生成的 Merge 对话框的屏幕截图进行演示,我很乐意奖励您。
-
感谢您的澄清!在 1.9 中,合并对话框包括一个“强制合并”复选框。但不幸的是,它不像我想象的那样在这种情况下工作(不知何故它正在修改文件,但它仍然有 Branch1 版本??)。嗯!
标签: merge tortoisesvn tree-conflict