我有一些文件,在没有正确设置它们的MIME类型的情况下就将它们检入了SVN。SVN最初将它们分类为二进制。
后来我通过propset在SVN中设置了它们的MIME类型为"text/plain; charset=UTF-8",并确保所有文件都是UTF-8编码。但是当我运行'svn blame filename'时,SVN仍然说该文件是二进制的,没有给出明确的blame-type输出。
您有什么建议可以让SVN确信这些文件真正是文本文件吗?
将svn:mime-type属性设置为"text/plain"就能起到帮助作用:
svn propset svn:mime-type text/plain build.xml
svn commit build.xml
此外,你可以强制Subversion在责备(blaming)文件时将其视为文本文件:
svn blame file/to/blame --force
find . -name *.proto | xargs svn propset svn:mime-type text/plain
将所有的proto
文件标记为纯文本文件: - DawnSong~/.subversion/config
,在文件的 [auto-props]
部分中添加 *.proto = svn:mime-type=text/plain
作为单独的一行。 - DawnSong我也遇到了同样的问题:我上传了一些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在这种情况下会如何表现,但这很容易测试。
看起来对MIME类型的操作并不能让svn将文件视为文本。但是,如果在第一次提交之前设置了正确的MIME类型,则svn会正确地处理该文件。例如,svn将eclipse .project和.classpath添加为application/xml,并将它们视为二进制文件。但是,如果在第一次提交之前将其更改为text/xml,则它们将被视为文本。
在将文件添加到存储库后,您可能还需要设置 REPOSITORY 上的类型。在 propset 命令中使用存储库的 URL 而不是工作副本的路径。
svn propget svn:mime-type 文件名
输出结果为: text/plain; charset=UTF-8 - DWright