【问题标题】:Prevent SVN from inserting "mine" and "theirs" blocks into conflicted code?防止 SVN 将“我的”和“他们的”块插入到冲突代码中?
【发布时间】:2015-01-19 19:03:45
【问题描述】:

当我 SVN 更新标记为冲突的代码时,如何防止 SVN 将“我的”和“他们的”块插入到我的代码文件中?

当我对自上次更新以来服务器上已更改的代码文件进行更改时,SVN 似乎在我更新时将“mine”/“theirs”块直接手动插入到我的代码中,从而使代码文件在合并工具。如果 SVN 没有修改我在磁盘上的工作副本(在我 diff 之前),我希望这样我可以在我的合并工具中执行所有 diff,然后提交一个合并文件。

编辑:明确地说,我知道生成的两个文件:“foo.cs.mine”、“foo.cs.r12”。我可以通过在合并工具中选择这两个文件然后在“foo.cs”上写出结果来手动选择对它们进行比较,但这对于通常是“右键单击-> diff”过程的事情来说是一堆额外的步骤一般。我正在考虑编写一个 bash 脚本来为我执行此操作。

【问题讨论】:

    标签: svn tortoisesvn


    【解决方案1】:

    Subversion 将那些 minetheirs 块放入您的代码中是有原因的。它希望您处理该合并冲突。如果 Subversion 只是忽略了冲突而只使用了您的代码,您最终可能会将您的代码提交回 repo,并删除其他开发人员的工作。

    我不确定 TortoiseSVN 是如何工作的,但我知道命令行会在发生合并冲突时告诉你,然后让你选择你想要做什么:使用 他们的 代码?,接受你的代码?,接受他们的代码冲突?,接受你的代码冲突?,后置解决方案,最后,启动@ 987654321@ 用于合并。

    90% 的时间,我手动处理合并冲突 -- 查看 mine它们的 块并弄清楚该怎么做。有时,我会启动 VimDiff 进行合并。

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

    我希望 Subversion 拥有的一件事是 svn update 上的 --dry-run 选项。您可以使用标准合并来帮助您在合并之前识别合并问题。如果svn update有同样的能力就好了。

    【讨论】:

    • 我想没有办法解决它。感谢您提供信息丰富的回复!
    • svn update --dryrun 不存在,但 'svn st -u' 会显示存储库中的更改并将更新。
    猜你喜欢
    • 1970-01-01
    • 2019-10-29
    • 1970-01-01
    • 2012-11-20
    • 1970-01-01
    • 2019-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多