svn总出现二进制相关的烦人事
在使用svn add 时提示: A (bin) templates/translate/screen/selectTransLang.vm 请看官方文档的解释: 当你第一次添加或者导入文件到Subversion中时,Subversion会检测该文件是否是二进制文件。目前,Subversion的策略是只检测文件的前1024个字节;如果所有字节都是0,或者超过15%都是非ASCII码输出字符的话,那么Subversion就认定该文件是二进制文件。 如果Subversion认定文件是二进制文件,那么这个文件就会自动添加svn:mime-type属性,并设置为“application/octet-stream”。(你随时可以使用auto-props特性来重写这样的行为,或者使用svn propset手动设置属性。) Subversion对以下的文件做普通文本处理: 1、没有设置svn:mime-type属性的文件 2、文件的svn:mime-type属性值以“text/”开头 3、文件的svn:mime-type属性值等于“image/x-xbitmap” 4、文件的svn:mime-type属性值等于“image/x-xpixmap”
所有其他文件都将被视为二进制文件处理,这意味着Subversion: 1、不会尝试在svn update或者svn merge操作时将远程修改合并到本地中 2、在svn diff中不会显示出不同 3、在svn blame不会每行显示版本和作者信息
在其他方面,Subversion将二进制文件和其他文本文件一样对待 需要注意,不管是不是二进制文件,都不会影响版本库中用来存储文件变更的空间大小,也不会影响客户端和服务端之间的通讯量。出于存储和传输考虑,Subversion使用的是对二进制文件和普通文本文件一致处理的diffing方法;这和‘svn diff’使用的diffing方法完全不相关。
好了,我们来看看刚才加的文件是否为二进制: 进入.svn/props 发现生成文件:selectTransLang.vm.svn-work 内容如下: K 13 svn:mime-type V 24 application/octet-stream END 或者用如下方法 svn propget svn:mime-type selectTransLang.vm 输出:application/octet-stream
解决方法,直接编辑去掉这个属性 svn propedit svn:mime-type selectTransLang.vm 或者删除.svn/props/selectTransLang.vm.svn-work
看看网上其他牛人的解决方法: 修改~/.subversion/config 找到最后一个section,在最后加上如下一行话: *.txt = svn:mime-type=text/plain;svn:eol-style=native 光这个还不够,向上搜索到这么一行 # enable-auto-props = yes 把前面用来注释这行的那个#和其后的空格去掉
如果用的是TortoiseSVN,开始菜单 -> TortoiseSVN -> Settings -> General,此时右侧有一个名为Edit的按钮,点击之后就可以编辑config了