2016-12-15 1 views
1

Если я расчесываю diffs с помощью hg log -p или hg diff, было бы неплохо увидеть что-то вроде «двоичного файла отличается», вместо того, чтобы прокручивать экранные черты тарабарщины, чтобы перейти к следующему файлу. Есть ли трюк конфигурации для этого?В mercurial есть способ рассказать hg log и diff для пропуска бинарных разностей?

(На предварительном просмотре, если нет простой hg возможности установить, то там может быть некоторыми намеки в правильном направлении в this question. Я все еще нужна помощь, чтобы получить то, что я спрашиваю, хотя.)

+0

не могли бы вы привести список шагов для воспроизведения минимального примера? в настоящее время пробовали и не видели такой тарабарщины, просто строка с надписью «Двоичный файл some.blob изменился» – arhak

+0

Я хочу, что у вас есть! Когда у меня есть набор изменений, который, например, изменяет pdf, то либо 'hg log -pr', либо' hg diff -change' выдают мне вывод, например: 'GIT двоичный патч - литерал 467997 - zc% 0O_1 # lcqvMxHZ (3UJ_mc6W7 ... '_ (много строк) _ –

+0

Существует опция' -a'/'--text' для принудительного вывода текста, если что-то случайно обнаружено как двоичное, но обратное не представляется возможным. И я только узнанное двоичное обнаружение [основано на наличии NUL-байтов в файле.] (https://www.mercurial-scm.org/wiki/BinaryFiles). В моем файле определенно есть строки NUL-байтов. –

ответ

3

С @ arhak помощью, я вижу, что проблема была это в моем .hgrc

[diff] 
git = True 

Я забыл, что я добавил, что после прочтения this advice, что ГИТ-посмотреть различия в стиле более читабельны, чем различия в стиле патча, которые являются по умолчанию Mercurial. Я не могу найти описание различий, но теперь, глядя на несколько различий, --git (-g), похоже, не учитывает даты в заголовках файлов, и, по-видимому, он также заставляет полный diff для uuencode для двоичных файлов. Я думаю, что я буду использовать его как значение по умолчанию, но отключите его, если для необычных ситуаций, когда я просматриваю патчи с большим количеством изменений двоичных файлов.

Для override at the commandline без редактирования .hgrc, добавьте --config diff.git=False

Мне было бы любопытно, если есть способ, чтобы пропустить двоичные файлы, но сохранить форматирование GIT для обычных текстовых файлов в дифф.

1

это то, что я получаю, проверьте меркурийную версию, на всякий случай

Я думаю, что, возможно, у вас есть расширения, делающие причудливые вещи с каплями, так как я не могу получить то, что вы описываете. Я просто 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 »Двоичный файл ... изменилось ». Я постараюсь следить за тем, как сужу к виновнику. –

Смежные вопросы