2016-12-15 45 views
1

如果我通過使用hg log -phg diff來比較差異,很高興看到諸如「二進制文件不同」之類的內容,而不必滾動屏幕截圖來查看下一個文件。有配置技巧來做到這一點?在mercurial有沒有辦法告訴hg log和diff來跳過二進制差異?

(點擊預覽,如果沒有簡單hg選項設置,則可能是在正確方向上的一些提示在this question。我仍然需要更多的幫助,讓我在問什麼,雖然)。

+0

請問您可以給出一個步驟列表來重現一個最小的例子嗎?目前嘗試過,並沒有看到這樣的亂碼,只是一條線,說明「二進制文件some.blob已經改變」 – arhak

+0

我想你有什麼!例如,當我有一個更改pdf的變更集時,那麼'hg log -pr'或者'hg diff --change'都會給出如下輸出:'GIT binary patch - literal 467997 - zc%0O_1#lcqvMxHZ(3UJ_mc6W7 ...'_(許多行)_ –

+0

如果偶然檢測到二進制文件,但是似乎沒有提供相反的內容,則可以使用'-a' /'--text'選項強制輸出文本。剛學過二進制檢測[基於文件中NUL字節的存在。](https://www.mercurial-scm.org/wiki/BinaryFiles)雖然我的pdf文件中肯定有一些NUL字節的字符串,但 –

回答

3

隨着@ arhak的幫助下,我看到的問題是這樣的,我.hgrc

[diff] 
git = True 

我忘了,我會補充說,讀this advice了Git風格的diff之後比Mercurial默認的補丁風格差異更具可讀性。我找不到差異的描述,但現在看幾個差異,--git-g)似乎忽略了文件名標題中的日期,顯然它也強制了二進制文件的完整uuencode風格差異。我想我會保留它作爲默認值,但如果我在尋找具有大量二進制文件更改的補丁的異常情況,請將其關閉。

override at the commandline沒有編輯.hgrc,加--config diff.git=False

我很好奇,如果有跳過二進制文件的方式,但保持git的格式在DIFF普通的文本文件。

1

這是我得到的,檢查mercurial版本,以防萬一

我在想也許你有一個擴展使花哨的東西blobs,因爲我不能得到你所描述的。我只是得到Binary file doc.pdf has changed

$ hg version 
Mercurial Distributed SCM (version 3.9.2) 
... 
$ mkdir hg-test 
$ cd hg-test 
$ hg init 
$ echo a text line > text.txt 
$ hg add text.txt 
$ hg commit -m "1st" 
$ echo another text line >> text.txt 
$ hg commit -m "2nd" 
$ hg add doc.pdf 
$ hg commit -m "a binary file" 
$ hg commit -m "modified the binary file" 
$ hg diff --change 3 
diff -r 2fd7730bc3bb -r 155aefdccfbe doc.pdf 
Binary file doc.pdf has changed 
$ hg diff --change 1 
diff -r 9e171966ad0d -r 105aa77984c0 text.txt 
--- a/text.txt Sat Dec 17 12:18:46 2016 +0100 
+++ b/text.txt Sat Dec 17 12:19:28 2016 +0100 
@@ -1,1 +1,2 @@ 
a text line 
+another text line 
$ hg log -pr0:3 
changeset: 0:9e171966ad0d 
user:  arhak 
date:  Sat Dec 17 12:18:46 2016 +0100 
summary:  1st 

diff -r 000000000000 -r 9e171966ad0d text.txt 
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 
+++ b/text.txt Sat Dec 17 12:18:46 2016 +0100 
@@ -0,0 +1,1 @@ 
+a text line 

changeset: 1:105aa77984c0 
user:  arhak 
date:  Sat Dec 17 12:19:28 2016 +0100 
summary:  2nd 

diff -r 9e171966ad0d -r 105aa77984c0 text.txt 
--- a/text.txt Sat Dec 17 12:18:46 2016 +0100 
+++ b/text.txt Sat Dec 17 12:19:28 2016 +0100 
@@ -1,1 +1,2 @@ 
a text line 
+another text line 

changeset: 2:2fd7730bc3bb 
user:  arhak 
date:  Sat Dec 17 12:27:38 2016 +0100 
summary:  a binary file 

diff -r 105aa77984c0 -r 2fd7730bc3bb doc.pdf 
Binary file doc.pdf has changed 

changeset: 3:155aefdccfbe 
tag:   tip 
user:  arhak 
date:  Sat Dec 17 12:28:50 2016 +0100 
summary:  modified the binary file 

diff -r 2fd7730bc3bb -r 155aefdccfbe doc.pdf 
Binary file doc.pdf has changed 
+0

謝謝!我在我的hg版本中提到了一個問題 - 但是升級並沒有幫助,但根據你的想法,我嘗試了'mv .hgrc .hgrc.bak',並且使用默認配置I * do * get「Binary file ......已經改變了「,在我縮小到罪魁禍首後,我會盡力跟進。 –

相關問題