如何正确使用 KDiff3 与 TortoiseSVN 来解决冲突?

Posted

技术标签:

【中文标题】如何正确使用 KDiff3 与 TortoiseSVN 来解决冲突?【英文标题】:How can KDiff3 be used properly with TortoiseSVN to resolve conflicts? 【发布时间】:2010-09-16 14:05:23 【问题描述】:

我已将 TortoiseSVN 设置为使用 KDiff3 作为冲突解决工具(我发现它比内置的 TortoiseMerge 显示了更多对合并有用的信息)。

当我使用 Tortoise 的“编辑冲突”命令打开一个文件时,它会显示三个文件,我必须手动选择“合并->合并当前文件”。问题是 KDiff3 将结果保存到 source_file.working 而不是 source_file。因此,如果不执行另存为,则存在冲突的真实文件不会被修改。有没有办法每次都执行此手册另存为?

我知道这不是一个严格的编程问题,而是一个对程序员来说足够普遍的辅助过程,它在这里应该很有用。我在别处找不到这个问题的答案。

【问题讨论】:

【参考方案1】:

我的有点长:

"C:\Program Files\KDiff3\kdiff3.exe" %base %mine %theirs -o %merged --L1 Base --L2 Mine --L3 Theirs

【讨论】:

原来如此!而且由于我无权获得此问题的答案,而且您的内容更全面,因此请继续。 我发现(至少对我而言)标签可以设置为(偶尔)更有帮助的东西:---L1 "Base: %base" --L2 "Mine: %我的”--L3“他们的:%他们的” 这行得通。有没有办法让它在您关闭 KDiff3 编辑器时将冲突标记为已解决?也许有一个用例可以让您在手动选择“标记为已解决”之前做一些事情,但最好不要最后一步。 @EdRandall Yours 在%mine%theirs 包含空格时失败,它会尝试打开三向合并而不是差异。可能是因为%mine%theirs 的内容包含在" 引号中。【参考方案2】:

如果有其他人和我一样,让我指出他是在 TortoiseSVN->Settings->Diff Viewer 中完成的。我在已经安装 Tortoise 的 Windows 中安装了 KDiff3,它是自动配置的。我花了一些时间才弄清楚需要在哪里完成。

【讨论】:

【参考方案3】:

原来我只需要一个更具体的命令行。我将它设置为kdiff3.exe 的路径,并希望从 TortoiseSVN 传递的默认参数就足够了。不是这样。这是需要的(关键是-o 参数):

C:\Program Files\KDiff3\kdiff3.exe %base %theirs %mine -o %merged

【讨论】:

【参考方案4】:

我遇到了同样的问题,但无需任何命令行即可解决: 当我点击“编辑冲突”时,kdiff3 打开了。 解决冲突后,我只需单击“保存”并关闭 kdiff3 窗口。 关闭窗口后,我切换回 SVN“解决冲突”窗口并单击解决。 然后就出现了下一个冲突....

【讨论】:

以上是关于如何正确使用 KDiff3 与 TortoiseSVN 来解决冲突?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 kdiff3 设置为 SVN 的合并工具

Git:如何将 KDiff3 配置为合并工具和差异工具?

Ubuntu下Git安装图形化代码合并工具kdiff3

KDiff3 可以用于 Visual Studio 2017 中的比较/差异吗?

Kdiff3 不会用 mergetool 命令打开

Git 中设置更改 文件对比程序 的方法