Инструмент для сравнения трехсторонних двоичных (шестнадцатеричных) файлов? - PullRequest
5 голосов
/ 30 декабря 2010

У меня есть набор двоичных файлов конфигурации с тремя версиями в каждом - оригинальной и двумя по-разному измененными версиями каждого файла. Мне нужно иметь возможность видеть различия между двумя версиями, а также оригиналом, все одновременно.

Мне нужен трехсторонний инструмент сравнения для двоичных файлов. В результате довольно утомительного поиска в Google я случайно обнаружил снимок экрана приложения, которое делает именно то, что мне нужно - к сожалению, в сообщении на форуме, содержащем изображение, не упоминается, какое приложение они используют:

http://www.xboxhacker.org/index.php?topic=15032.0

Может ли кто-нибудь указать мне направление (Windows) -приложения, которое обеспечивает бинарно-безопасное (шестнадцатеричное) сравнение трех двоичных файлов ??

Ответы [ 5 ]

9 голосов
/ 30 декабря 2010

Vim имеет встроенный инструмент сравнения, который может сравнивать произвольное количество файлов. Он также работает на Windows. Вы можете найти его на http://vim.org.

Стандартная установка vim для Windows включает xxd, что позволяет вам видеть двоичные файлы в виде текста:

Например, если вы попробуете:

xxd xxd.exe

вы получите:

0000000: 4d5a 9000 0300 0000 0400 0000 ffff 0000  MZ..............
0000010: b800 0000 0000 0000 4000 0000 0000 0000  ........@.......
0000020: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000030: 0000 0000 0000 0000 0000 0000 d800 0000  ................
0000040: 0e1f ba0e 00b4 09cd 21b8 014c cd21 5468  ........!..L.!Th
0000050: 6973 2070 726f 6772 616d 2063 616e 6e6f  is program canno
0000060: 7420 6265 2072 756e 2069 6e20 444f 5320  t be run in DOS 
0000070: 6d6f 6465 2e0d 0d0a 2400 0000 0000 0000  mode....$.......
0000080: 6ba7 bec3 2fc6 d090 2fc6 d090 2fc6 d090  k.../.../.../...

и т.д ...

Таким образом, вы можете использовать xxd для выгрузки двоичных файлов в текстовые файлы:

xxd orig > orig.txt
xxd mod1 > mod1.txt 
xxd mod2 > mod2.txt

А затем запустите vim в режиме сравнения:

vim -d orig mod1 mod2

И это даст вам что-то вроде этого:

example of 3-way vimdiff

(Этот снимок экрана взят из здесь и является не более чем иллюстрацией того, как будет выглядеть 3-way diff в VIM)

Все эти инструменты доступны в Windows, поэтому они должны решить вашу проблему.

Edit:

После объединения результатов xxd вы можете преобразовать шестнадцатеричный дамп в двоичный файл, используя xxd -r:

xxd -r merged_xxd_file merged_binary_file

Более подробную информацию и опции вы можете найти в справочной странице xxd

2 голосов
/ 04 января 2011

Снимок экрана: Объединение Araxis . Их профессиональная версия ($ 270) поддерживает трехстороннее сравнение.

1 голос
/ 10 декабря 2011

Вы можете взглянуть на ECMerge (инструмент, над которым я работаю), он имеет 2- и 3-стороннюю разность двоичных файлов (HEX + ASCII).Там нет функции слияния.Вы можете перемещаться из измененной области в область изменения легко и сжимать длинные зоны (длинные вставки, изменения или без изменений).

0 голосов
/ 16 июля 2014

Недавно я познакомился с p4merge , который также поддерживает двоичные файлы.

Требуется 3 файла на вход: оригинал и два производных. Он показывает их рядом, с четвертым окном, в котором отображается объединенный файл, с возможностями редактирования и разрешения конфликтов.

Я просто использовал это для объединения двух ветвей большой кодовой базы, и это было чрезвычайно удобно.

p4merge example

Теперь я не использовал его для слияния двоичных файлов, но он поддерживает разностные изображения, поэтому я был бы удивлен, если бы двоичные файлы не поддерживались.

0 голосов
/ 30 декабря 2010

Последняя версия Beyond Compare , кажется, поддерживает 3-way diff и объединение .Более того, в списке указано, что он поддерживает сравнение двоичных файлов.

Обратите внимание, что это не бесплатное программное обеспечение: -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...