如果我通過使用hg log -p
或hg diff
來比較差異,很高興看到諸如「二進制文件不同」之類的內容,而不必滾動屏幕截圖來查看下一個文件。有配置技巧來做到這一點?在mercurial有沒有辦法告訴hg log和diff來跳過二進制差異?
(點擊預覽,如果沒有簡單hg
選項設置,則可能是在正確方向上的一些提示在this question。我仍然需要更多的幫助,讓我在問什麼,雖然)。
如果我通過使用hg log -p
或hg diff
來比較差異,很高興看到諸如「二進制文件不同」之類的內容,而不必滾動屏幕截圖來查看下一個文件。有配置技巧來做到這一點?在mercurial有沒有辦法告訴hg log和diff來跳過二進制差異?
(點擊預覽,如果沒有簡單hg
選項設置,則可能是在正確方向上的一些提示在this question。我仍然需要更多的幫助,讓我在問什麼,雖然)。
隨着@ arhak的幫助下,我看到的問題是這樣的,我.hgrc
[diff]
git = True
我忘了,我會補充說,讀this advice了Git風格的diff之後比Mercurial默認的補丁風格差異更具可讀性。我找不到差異的描述,但現在看幾個差異,--git
(-g
)似乎忽略了文件名標題中的日期,顯然它也強制了二進制文件的完整uuencode風格差異。我想我會保留它作爲默認值,但如果我在尋找具有大量二進制文件更改的補丁的異常情況,請將其關閉。
爲override at the commandline沒有編輯.hgrc
,加--config diff.git=False
我很好奇,如果有跳過二進制文件的方式,但保持git的格式在DIFF普通的文本文件。
這是我得到的,檢查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
謝謝!我在我的hg版本中提到了一個問題 - 但是升級並沒有幫助,但根據你的想法,我嘗試了'mv .hgrc .hgrc.bak',並且使用默認配置I * do * get「Binary file ......已經改變了「,在我縮小到罪魁禍首後,我會盡力跟進。 –
請問您可以給出一個步驟列表來重現一個最小的例子嗎?目前嘗試過,並沒有看到這樣的亂碼,只是一條線,說明「二進制文件some.blob已經改變」 – arhak
我想你有什麼!例如,當我有一個更改pdf的變更集時,那麼'hg log -pr'或者'hg diff --change'都會給出如下輸出:'GIT binary patch - literal 467997 - zc%0O_1#lcqvMxHZ(3UJ_mc6W7 ...'_(許多行)_ –
如果偶然檢測到二進制文件,但是似乎沒有提供相反的內容,則可以使用'-a' /'--text'選項強制輸出文本。剛學過二進制檢測[基於文件中NUL字節的存在。](https://www.mercurial-scm.org/wiki/BinaryFiles)雖然我的pdf文件中肯定有一些NUL字節的字符串,但 –