在运行svn up时,我经常会遇到这样的提示:
Conflict discovered in 'lib/somelibrary.so'.
Select: (p) postpone,
(mf) mine-full, (tf) theirs-full,
(s) show all options:点击s会显示mc和tc选项,我的冲突和他们的冲突,这应该允许我使用我的版本或他们的版本来处理所有冲突,而不仅仅是somelibrary.so。
然而,这些选项不起作用。我得到了这样的信息:
Invalid option; cannot choose based on conflicts in a binary file.埃德温的回答清楚地表明,我误解了mc和tc的工作方式,但我仍然希望能够对每个冲突的文件采取相同的解决方案。有没有办法让svn在每次冲突时都使用mf或tf,而不会在第一次冲突后再次提示我?
发布于 2012-01-28 22:35:28
要自动解决svn update、svn switch、svn merge上的冲突,请使用--accept标志。
从SVN Book - svn options
--接受操作
指定用于自动解决冲突的操作。可能的操作是推迟,基地,地雷-满,他们的-满,编辑和发射。
在svn resolve specification中可以看到每个操作的含义
接受您可以根据所需的解决方案将以下参数传递给--
命令:
基本选择在您更新工作副本之前作为基本修订的文件。也就是说,您在进行最新编辑之前检出的文件。
working 假设您已经手动处理了冲突解决方案,请选择当前位于工作副本中的文件版本。
svn mine-full svn解决所有冲突的文件,并在运行svn update之前立即保留这些文件的副本。
theirs full解决所有冲突的文件,其中包含您运行svn update时从服务器获取的文件副本。
mine-conflict通过在每个文件内容的冲突区域中优先选择本地修改而不是从服务器获取的更改来解决所有冲突文件。
theirs-conflict通过优先选择从服务器获取的更改,而不是每个文件内容的冲突区域中的本地修改,来解决所有冲突文件。
也可以查看Resolve Any Conflict部分。
最后,给出一个例子。要在更新时以mine-full身份自动解决所有冲突,请执行:
$ svn up --resolve mine-full发布于 2012-01-28 05:03:51
mc和tc是合并选项,其中只考虑冲突的行,然后合并来自您的源(mc)或“其他”源(tc)的行。
二进制文件的结构通常不会包含行,因此,基于一个文本行替换另一个文本行的冲突解决算法对于二进制文件不能正常工作。编写SVN的开发人员知道这一点,因此在处理二进制文件时,只对文本文件有意义的选项将不会被接受。
您可以使用mf和tf,它们略有不同。它们不是只替换文件的冲突区域,而是用完整文件的(mf)“我的”副本或(tf)完整文件的“他们”副本替换整个文件。
如果希望SVN“关闭并接受mc / tc文件选项”,svn可以编辑mime类型并将其设置为文本。如果这不是一个文本文件,祝你好运,很可能你得到的文件不在起始二进制文件的规范范围内(例如,合并两个jpeg文件的连续部分将不会产生一个有效的jpeg文件)。
https://stackoverflow.com/questions/9039866
复制相似问题