SVN将整个文件标记为冲突

时间:2009-02-26 20:02:31

标签: svn

我是SVN的新手。在分支上工作了一天左右后,我尝试将更改从主干合并到分支:

svn merge svn://server/trunk

问题在于,每当SVN遇到冲突文件时,它都无法逐行识别并将整行标记为冲突。我尝试了其他几个SVN客户端,并尝试切换终端线和空白区选项而没有任何进展。我究竟做错了什么?我认为这是最简单的合并情况,所以我希望这可以使用最默认的Subversion设置,任何客户端和任何SVN版本。这是一些已知的初学者的捕获吗?

客户:1.5.5(SlikSvn:tag/1.5.5@34877)WIN32

服务器:1.4.6(r28521),Windows

修改

根据以下评论和答案中的建议,我做了更多调查:

  1. 有问题的文件是UTF8。

  2. 他们没有任何SVN属性。

  3. “svn diff”命令正确识别差异。

5 个答案:

答案 0 :(得分:5)

我们最近遇到了这个问题,发现使用1.4.x服务器和1.5.x客户端时出现问题。 Subversion 1.5引入了更智能的合并,但您需要服务器和客户端运行1.5才能利用这一点。

我们发现指定要合并的修订号范围给出了预期的结果。

答案 1 :(得分:2)

我选择了Mark的答案。这只是为了总结并提供更多细节。我的问题是由于我们使用的SVN 1.4不支持更高级的1.5合并功能。如所选答案所示,我发现我必须使用以下格式的SVN合并命令(如果我想将更改从trunk传播到我的分支):

svn merge svn://dpr/branches/abc@REV svn://dpr/trunk@REV

我想我的困惑是由于SVN书籍和我使用的客户端默默地假设我已经运行1.5并且示例和默认合并方法正在使用新功能。公平地说,SVN书籍中基本合并部分的介绍提到了它(我只在解决问题时才注意到这一点)。

答案 2 :(得分:0)

您是否尝试过使用TortoiseSVN?它与ToroiseMerge捆绑在一起,我发现它也是一个不错的合并。

答案 3 :(得分:0)

我没有使用SVN,我只是通过eclipse插件使用它,但是在某些情况下你只需告诉它使用哪种情况(你的本地vs远程文件) 。合并一组不相交的传出和传入更改通常不是问题,但如果一行与某些类型的更改冲突(在eclipse中它将整行/块标记为红色),您可能只需要接受一个或另一个它可能不会自己进一步合并。

答案 4 :(得分:0)

检查文件的svn:mime-type属性。如果存在这样的属性集并且其值不以'text /'开头,则Subversion将这些文件视为二进制而不是文本。

如果您的文件是以utf-16编码的,Subversion默认也会将这些文件视为二进制文件。