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了