2011-04-21 38 views
24

有人最近爲我們的Mercurial存儲庫添加了PowerShell(.ps1)腳本。該文件是純文本,但TortoiseHg似乎認爲它是二進制文件,並顯示一條消息:「文件或差異不顯示:文件是二進制文件」。如何告訴TortoiseHg文件不是二進制文件?

如何告訴TortoiseHg ps1文件是文本而不是二進制文件。我正在使用版本TortoiseHg 2.0.3

+3

我很想看到一個不依賴於改變文件編碼的答案。我們跟蹤一個項目文件,對於我們無法更改的商業工具,將文件保存在UCS-2中; TortoiseHg聲稱這些文件是二進制文件,並選擇不顯示差異。 – 2012-10-01 21:13:25

+0

@ChrisPhillips - 如果您可以爲無人值守文件重新編碼找到工具,您可以(嘗試)使用[編碼|解碼技巧](http://www.selenic.com/mercurial/hgrc.5.html#decode - 編碼)這些文件 – 2012-11-29 09:23:04

回答

28

這些文件以UCS-2編碼進行編碼,我使用記事本++將其轉換爲UTF-8。

現在這樣做了,mercurial似乎將文件識別爲文本並正確執行diff。

這是我的read這次!

由於UCS-2似乎與UTF-16密切相關,所以也可能值得看this。根據這一聯繫,它超越了它,但是從2000年以前一直在努力將Windows從UCS-2遷移到UTF-16!

1

使用記事本++有助於將UCS-2編碼轉換爲UTF-8。

然而,當我使用它,例如,轉換XML(Visual Studio中的csproj)文件,不要忘記從UTF-16改變XML編碼成UTF-8,如:

<?xml version="1.0" encoding="utf-8"?> 
5

很抱歉,對於那些過時的帖子作出迴應,但出於歷史考慮,我們需要提供一些評論。

首先,底層代碼存儲庫(mercurial)將所有文件視爲二進制文件,只要修訂版本即可。你在這裏失去的所有東西都是看到差異的能力,物理差異仍然被追蹤,由於龜龜無法展示它們,這些變化的本質並不會更大。 (相比之下,JPEG二進制文件即使對於小像素變化也具有較大的二進制差異;而這些文件將具有相對較小的差異。)

其次,儘管龜龜無法顯示差異,但如果設置爲kdiff3您的mercurial.ini文件適當。在您的主目錄中,您可能有一個mercurial.ini文件,即使只是記錄您的用戶名。如果將其展開以包含合併模式。在這裏尋找合併模式:http://www.selenic.com/mercurial/hgrc.5.html

在那裏,你會看到如何告訴mercurial這些文件的差異應該與kdiff3一起顯示,儘管mercurial認爲它們是二進制的。烏龜仍然不會在工作臺上顯示差異,但您可以右鍵單擊該文件並向父級顯示差異,您將看到差異。這並不完美,但總比沒有好。

相關問題