防止 SVN 将 "mine" 和 "theirs" 块插入到冲突代码中?

Prevent SVN from inserting "mine" and "theirs" blocks into conflicted code?

当我更新标记为冲突的代码时,如何防止 SVN 将 "mine" 和 "theirs" 块插入我的代码文件?

当我更改自上次更新后在服务器上发生更改的代码文件时,SVN 似乎在我更新时手动将 "mine"/"theirs" 块直接插入到我的代码中,使得合并工具中无法区分的代码文件。我希望 SVN 不修改我的工作副本 on-disk(在我比较之前),这样我就可以在我的合并工具中执行所有比较,然后提交合并文件。

编辑:明确地说,我知道生成的两个文件:"foo.cs.mine"、"foo.cs.r12"。我可以手动选择通过在合并工具中选择这两个文件来区分它们,然后在 "foo.cs" 上写出结果,但对于通常是 "right-click -> diff" 过程的东西来说,这是一堆额外的步骤。我正在研究为我编写一个 bash 脚本。

Subversion 将那些 我的他们的 块放在您的代码中是有原因的。它希望您处理该合并冲突。如果 Subversion 简单地忽略冲突并只使用您的代码,您最终可能会将您的代码提交回存储库,并删除其他开发人员的工作。

我不确定 TortoiseSVN 是如何工作的,但我知道命令行会在发生合并冲突时告诉您,然后让您选择要执行的操作:采取 他们的代码?,接受你的代码?,接受他们的代码是否有冲突?,接受你的 冲突代码?,后置解决方案,最后,为合并启动 a third party merge tool

90% 的时间,我手动处理合并冲突——查看 minetheir 块并找出什么去做。有时,我会启动 VimDiff 进行合并。

TortoiseSVN 应该会为您提供类似的选项,您可以将 TortoiseMerge 集成到 TortoiseSVN 中以进行这些合并。您也可以将其他第三方合并工具集成到 Subversion 中。我见过人们将 Vimdiff 和 Gmacs 设置为在文件中存在合并冲突时自动开始合并。

我确实希望 Subversion 有一个 svn update 选项。您拥有标准合并,这将有助于在您进行合并之前识别合并问题。如果svn update有同样的能力就好了