首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何才能让SVN针对所有的二进制冲突采取特定的解决方案,而不会对每个冲突都进行提示?

如何才能让SVN针对所有的二进制冲突采取特定的解决方案,而不会对每个冲突都进行提示?
EN

Stack Overflow用户
提问于 2012-01-28 04:49:35
回答 2查看 5K关注 0票数 8

在运行svn up时,我经常会遇到这样的提示:

代码语言:javascript
复制
Conflict discovered in 'lib/somelibrary.so'.
Select: (p) postpone,
        (mf) mine-full, (tf) theirs-full,
        (s) show all options:

点击s会显示mctc选项,我的冲突和他们的冲突,这应该允许我使用我的版本或他们的版本来处理所有冲突,而不仅仅是somelibrary.so

然而,这些选项不起作用。我得到了这样的信息:

代码语言:javascript
复制
Invalid option; cannot choose based on conflicts in a binary file.

埃德温的回答清楚地表明,我误解了mctc的工作方式,但我仍然希望能够对每个冲突的文件采取相同的解决方案。有没有办法让svn在每次冲突时都使用mftf,而不会在第一次冲突后再次提示我?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-28 22:35:28

要自动解决svn updatesvn switchsvn 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身份自动解决所有冲突,请执行:

代码语言:javascript
复制
$ svn up --resolve mine-full
票数 11
EN

Stack Overflow用户

发布于 2012-01-28 05:03:51

mc和tc是合并选项,其中只考虑冲突的行,然后合并来自您的源(mc)或“其他”源(tc)的行。

二进制文件的结构通常不会包含行,因此,基于一个文本行替换另一个文本行的冲突解决算法对于二进制文件不能正常工作。编写SVN的开发人员知道这一点,因此在处理二进制文件时,只对文本文件有意义的选项将不会被接受。

您可以使用mf和tf,它们略有不同。它们不是只替换文件的冲突区域,而是用完整文件的(mf)“我的”副本或(tf)完整文件的“他们”副本替换整个文件。

如果希望SVN“关闭并接受mc / tc文件选项”,svn可以编辑mime类型并将其设置为文本。如果这不是一个文本文件,祝你好运,很可能你得到的文件不在起始二进制文件的规范范围内(例如,合并两个jpeg文件的连续部分将不会产生一个有效的jpeg文件)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9039866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档