如何告诉Subversion将文件视为二进制文件?

如何告诉Subversion (svn)将文件视为二进制文件?

请先 登录 后评论

9 个回答

Jan Krüger

例如:

svn propset svn:mime-type image/png foo.png
请先 登录 后评论
Adrian Petrescu

根据Subversion FAQ,您可以使用svn propset将svn:mime-type属性更改为application/octet-stream

请先 登录 后评论
Paul Dixon

SVN查找mime类型的属性,如果它不存在,则猜测它是文本。您可以显式设置此属性,请参见http://svnbook.red-bean.com/en/1.5/svn.forcvs.binary-and-trans.html

请先 登录 后评论
KTamas

基本上,你必须将mime类型设置为octet-stream:

svn propset svn:mime-type application/octet-stream <filename>
请先 登录 后评论
Frank Wiles

它通常在默认情况下为您执行此操作,但如果不是这样,则需要查看文件属性和propset。

请先 登录 后评论
Evil Andy

《颠覆》的第367页

在最一般的意义上,Subversion处理二进制文件比CVS更优雅。因为CVS使用RCS,所以它只能存储不断变化的二进制文件的连续完整副本。然而,Subversion使用二进制差分算法来表示文件之间的差异,而不管它们是包含文本数据还是二进制数据。这意味着所有文件都以不同的方式(压缩)存储在存储库中。

CVS用户必须用-kb标记标记二进制文件,以防止数据被篡改(由于关键字展开和行结束转换)。他们有时会忘记这么做。

颠覆则走的是更加偏执的路线。首先,它从不执行任何类型的关键字或行尾转换,除非您明确要求它这样做(参见“关键字替换”和“行尾字符序列”小节了解更多细节)。默认情况下,Subversion将所有文件数据视为字面值字节字符串,并且文件总是以未翻译状态存储在存储库中。

第二,Subversion维护文件是“文本”还是“二进制”数据的内部概念,但这个概念只存在于工作副本中。在svn更新期间,Subversion将对本地修改的文本文件执行上下文合并,但不会尝试对二进制文件执行上下文合并。

为了确定上下文合并是否可行,Subversion将检查svn:mime-type属性。如果文件没有svn: MIME -type属性,或者有一个文本的MIME类型(例如,text/*), Subversion会假定它是文本。否则,Subversion假定该文件是二进制文件。Subversion还通过在svn import和svn add命令中运行二进制检测算法来帮助用户。这些命令将进行很好的猜测,然后(可能)在被添加的文件上设置二进制svn:mime-type属性。(如果Subversion猜错了,用户总是可以删除或手动编辑该属性。)

手工编辑将由

svn propset svn:mime-type some/type filename.extension
请先 登录 后评论
Brian R. Bondy

如果在Windows中使用乌龟svn,右键单击该文件并进入属性。单击new并添加一个svn:mime-type类型的新属性。put的值为application/octet-stream

请先 登录 后评论
grammar31

尽管Subversion试图自动检测文件是否是二进制文件,但您可以使用svn propset覆盖mime类型。例如, svn propset svn:mime-type application/octet-stream example.txt。这将使您的文件作为字节的集合,而不是文本文件。参见svn文件可移植性手册。

请先 登录 后评论
stormlash

可以手动将存储库中的文件标识为二进制文件,方法如下:

svn propset svn:mime-type application/octet-stream <filename>

这通常是不必要的,因为当文件第一次被添加时,Subversion将尝试确定该文件是否是二进制的。如果Subversion错误地将某个类型标记为“文本”,而该类型应该被视为二进制,则可以配置Subversion的自动道具功能,以自动使用非文本MIME类型标记该文件。无论在文件上配置了什么属性,Subversion仍然在存储库中以二进制格式存储该文件。

如果Subversion将MIME类型识别为“文本”类型,它将启用二进制文件中不可用的某些特性,例如svn diffsvn blame。它还允许自动行结束转换,这是在客户端对客户端基础上可配置的。

有关详细信息,请参见Subversion如何处理二进制文件?

请先 登录 后评论