如何明确告诉SVN将文件视为文本,而不是二进制文件

时间:2009-01-19 18:24:24

标签: svn file text encoding binary

我有很多文件在没有正确设置Mime类型的情况下检入SVN。 SVN最初将它们归类为二进制。

我已经通过propset将他们的Mime类型通过propset设置为“text / plain; charset = UTF-8”并且我确保所有文件都是UTF-8签名的。当我'svn blame filename'时,svn说该文件是二进制的,并没有给我明确的责备类型输出。

关于如何说服SVN这些是真正的文本文件的任何建议?

5 个答案:

答案 0 :(得分:52)

将svn:mime-type属性设置为“text / plain”有助于:

svn propset svn:mime-type text/plain build.xml
svn commit build.xml

此外,您可以强制Subversion在归咎时将文件视为文本:

svn blame file/to/blame --force

答案 1 :(得分:4)

我遇到了同样的问题:我检查了一些utf8文件(Linux的本机编码),其中一些错误地被选为二进制文件并显示“(bin)”。我没有深入研究错误是如何发生的,但检查了那里有什么......

$ svn propget svn:mime-type *

...注意到正确签入的文本文件根本没有svn:mime属性,只是从文本文件中删除了svn:mime-type属性错误地误导了二进制文件。

$ svn propdel svn:mime-type [mislabeled-text-file...]
$ svn ci -m "zap binary mime-types" [mislabeled-text-file...]

这似乎没有任何不良影响。警告我们:我不知道Windows在这种情况下会如何表现,尽管这很容易测试。

答案 2 :(得分:1)

This answer有相同的想法,但相反。其中的引文仍与您的查询相关。

答案 3 :(得分:0)

将文件添加到存储库后,您可能还需要在REPOSITORY上设置类型。使用存储库的URL而不是propset命令的工作副本的路径。

答案 4 :(得分:0)

看起来像mime-type的操作并不能说服svn将文件视为文本。但是如果在第一次提交之前设置了正确的mime-type,则svn正确处理该文件。例如,svn将eclipse .project和.classpath添加为application / xml并将它们视为bin。但是如果在第一次提交之前将其更改为text / xml,它们将被视为文本。