我有许多文件在没有正确设置它们的 Mime 类型的情况下签入 SVN。SVN 最初将它们分类为二进制。
我已经通过 propset 在 SVN 中将他们的 Mime 类型设置为“text/plain; charset=UTF-8”,并且我确保所有文件都是 UTF-8 签名的。当我执行 'svn blame filename' 时,svn 说该文件是二进制文件并且没有给我明确的责备类型输出。
关于如何说服 SVN 这些是真正的文本文件的任何建议?
将 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
我遇到了同样的问题:我签入了许多 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 在这种情况下会如何表现,尽管这很容易测试。
将文件添加到存储库后,您可能还需要在 REPOSITORY 上设置类型。在 propset 命令中使用存储库的 URL 而不是工作副本的路径。
看起来像 mime 类型的操作并不能说服 svn 将文件视为文本。但是如果在第一次提交之前设置了正确的 mime 类型,那么 svn 会正确处理文件。例如,svn 将 eclipse .project 和 .classpath 添加为 application/xml 并将它们视为 bin。但是,如果在第一次提交之前将其更改为 text/xml,它们将被视为文本。