为什么Linux上的Subversion客户端将我的XML文件检测为二进制文件?

时间:2014-10-27 12:47:24

标签: linux file svn binary

我在Linux上遇到svn客户端的奇怪错误。

我想将test.xml文件添加到存储库。此文件是标准XML文本文件,仅包含拉丁字符(无BOM)和Linux行尾(仅LF)。但我的svn客户端失败了:

[mn@mn testy]$ cat test.xml 
<?xml version="1.0" encoding="UTF-8"?>
<Test>test</Test>
<Test>89012345678901234</Test>
[mn@mn testy]$ file test.xml
test.xml: XML document text
[mn@mn testy]$ svn add test.xml
svn: E200009: Can't set 'svn:eol-style': file '/home/mn/testy/test.xml' has binary mime type property

相同的操作适用于Windows环境。我两个都配置了自动道具:

*.xml = svn:eol-style=native

我都有svn, version 1.8.10 (r1615264)

我可以开展工作:

  1. 在Windows上添加文件
  2. svn:mime-type=text/xml添加到自动道具中,如下所示:

    *.xml = svn:mime-type=text/xml;svn:eol-style=native
    
  3. 使用svn add选项
  4. --no-auto-props,然后使用svn propset

  5. 添加空文件,然后进行编辑
  6. 但我想通过简单地添加文件来实现。

    为什么Linux上的Subversion客户端会将此文件检测为二进制文件?

1 个答案:

答案 0 :(得分:6)

不是真正的解决方案,但有些评论可能有所帮助:

  • 通常,mime-types由auto-props的用户明确设置。
  • 我找到了一个如何将文件标记为二进制的引用:http://svnbook.red-bean.com/en/1.7/svn.forcvs.binary-and-trans.html也许这有助于理解它是如何工作的。
  • 您是否检查过该文件是否在Linux中可执行,以便Subversion认为它是二进制文件?

在客户端上使用Subversion 1.8,您就拥有了所谓的Repository Dictated Configuration,因此以下内容适用于所有情况:

  1. 在您的存储库(/或/ trunk)的根目录中包含值为svn:auto-props
  2. 的属性*.xml = svn:mime-type=text/xml;svn:eol-style=native
  3. 当您现在添加新文件(在Windows和Linux上),并且文件的结尾为.xml时,Subversion应将其添加为文件svn:mime-typesvn:eol-style的属性。如果文件是二进制文件,并且将mime-type设置为text/*之类,则应该没有任何魔法可以确保文件不被解释为二进制文件。
相关问题