2013-10-21 78 views
14

直接相關:svn diff: file marked as binary type(每個評論的答案)SVN DIFF:爲什麼標記某些文件作爲二進制

爲什麼我的SVN客戶端標記一些文件爲二進制?

具體而言,.sql在使用TortoiseSVN時具有道具svn:mime-type = application/octet-stream

我檢查右鍵單擊>龜上下文菜單>設置>常規> Subversion配置文件,並沒有什麼是取消註釋[miscellany][auto-props],所以其中的決定是從哪裏來的?

從我在相關文章中可以看到的,我可以通過刪除受影響文件的屬性來「修復它」,或通過配置/設置全局更改新文件的行爲,但是有沒有「簡單」方法爲所有受影響的文件都做?

有點關係:

+0

Jeez,並刪除'mime-type'屬性(假設它默認爲'text/plain'),每隔一個字符顯示一堆'NUL'字符垃圾。我的方案不適用嗎? TortoiseMerge查看器比較好... – drzaus

+1

我有同樣的問題......'.sql'文件當它們明顯是'text/plain',並且沒有'auto-props'設置時,它們會繼續上傳爲'application/octet-stream'。太糟糕了沒有人提供了一個答案:( – brazilianldsjaguar

回答

14

好吧,我發現這個問題在我的具體情況:

開發人員救了他使用的模板.sql文件爲新的腳本。不知何故,這個文件被保存爲UCS-2(或Unicode)編碼。每當他添加文件時,TortoiseSVN都會確定它是一個二進制文件。通過將編碼切換爲UTF-8,將模板和從其派生的文件正確添加爲text/plain

附加信息(編輯)

我發現了什麼可能是罪魁禍首。當使用GUI生成一些腳本時,SQL Server Management Studio將它們作爲Unicode寫入查詢窗口。如果文件被保存,它也將被保存爲Unicode。有趣的是,通過File>New打開的文件不會像這樣保存。微軟在2007年發現了一個問題(發現here),這顯然沒有得到解決。

+0

以及這將是一個痛苦追查...但值得一拍 – drzaus

+0

我能夠發現它,因爲'Notepad ++',它有一個很好的'編碼... '菜單,允許你查看當前和改變編碼。 – brazilianldsjaguar

+0

是的,記事本++可以很容易地修復每個文件,但如果你有很多文件,它似乎是一個[批處理腳本](http://www.msfn.org/ board/topic/158633-how-to-check-text-file-encoding-from-command-line /)(或[this](http://stackoverflow.com/questions/18684793/powershell-batch-change-files – drzaus

6

這裏有一個快速的方法來解決這個問題:

notepad %APPDATA%\Subversion\config 

向下滾動並取消這一行:

enable-auto-props = yes 

在[自動道具]加入這一行:

*.sql = svn:mime-type=text/plain 

現在,當您將.SQL文件添加到SVN時,它們將自動標記爲文本(不是八位字節流)。

編輯:刪除不必要的行結束文件更改。

+0

有趣的是,我做了同樣的事情,唯一不同的是第在我的自動道具被設置爲'* .sql = svn:mime-type = application/x-sql'而不是(不知道爲什麼)。將它改爲您的建議使得它在提交時顯示爲我想要的。 但我想指出'svn:eol-style = native'不是必須的,它實際上是改變了磁盤上的文件。 – drzaus

+0

我會標記這個答案,但它似乎沒有幫助現有的文件。 – drzaus

+2

必須檢出現有文件,更改其屬性並再次檢入。但這是一個完全不同的問題。 – user95209

相關問題