当SVN更新被标记为冲突的代码时,如何阻止SVN将“我的”和“他们的”块插入到我的代码文件中?
当我更新自上次更新后服务器上已更改的代码文件时,SVN似乎在我更新时手动将“我的”/“他们的”块直接插入到我的代码中,使得代码文件无法在合并工具。我更喜欢SVN没有修改我的工作副本磁盘(在我差异之前)所以我可以在我的合并工具中执行所有差异,然后提交合并文件。
编辑:要清楚,我知道生成的两个文件:“foo.cs.mine”,“foo.cs.r12”。我可以手动选择通过在合并工具中选择这两个文件然后在“foo.cs”上写出结果来区分那些,但这是一些额外的步骤,通常是“右键单击 - >差异”过程正常。我正在考虑编写一个bash脚本来为我做这个。
答案 0 :(得分:3)
Subversion将 mine 和他们的块放在代码中是有原因的。它希望您处理合并冲突。如果Subversion只是忽略了冲突而只是使用了你的代码,你最终可能会将代码提交回repo,并删除其他开发人员的工作。
我不确定TortoiseSVN是如何工作的,但我知道命令行会告诉你合并冲突,然后让你选择你想做什么:拿他们的代码?,你的代码?,接受他们的代码冲突?,接受你的代码冲突?,Postpose解决方案,最后,启动{ {3}}用于合并。
90%的时间,我手工处理合并冲突 - 查看我的和他们的块并找出要做的事情。有时,我会启动VimDiff进行合并。
TortoiseSVN应该为您提供类似的选项,您可以将a third party merge tool集成到TortoiseSVN中以进行这些合并。您也可以将其他第三方合并工具集成到Subversion中。我发现有人设置Vimdiff和Gmacs在文件中存在合并冲突时自动启动合并。
我希望Subversion在--dry-run
上拥有svn update
选项。您可以使用标准合并来帮助在合并之前识别合并问题。如果svn update
具有相同的能力,那就太好了。