Инструмент для сравнения трехсторонних двоичных (шестнадцатеричных) файлов?

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

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

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

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


person Brian Lacy    schedule 30.12.2010    source источник
comment
Кстати, я действительно ищу инструмент с графическим интерфейсом. Я был бы рад, если бы кто-нибудь мог просто сказать мне название этого инструмента на последнем снимке экрана в том сообщении на форуме, на которое я ссылался.   -  person Brian Lacy    schedule 30.12.2010


Ответы (5)


Скриншот взят из Araxis Merge. Их профессиональная версия (270 долларов США) поддерживает трехстороннее сравнение.

person Zoë Peterson    schedule 04.01.2011
comment
Это не поддерживает трехстороннее слияние двоичных файлов. Из ссылки: В дополнение к двустороннему сравнению файлов Professional Edition Merge позволяет вам сравнивать (и, для текстовых файлов, объединять) три файла. - person Nathan Fellman; 04.01.2011
comment
Я не увидел комментария ОП в вашем посте. Ну, это тот, что изображен, и он выполняет 3-стороннее двоичное сравнение. Я ожидаю, что поддержка бинарного слияния будет довольно редкой, так как было бы очень легко ввести повреждение. Это, безусловно, причина, по которой мы никогда не рассматривали Beyond Compare. - person Zoë Peterson; 04.01.2011
comment
@Craig: мы никогда не рассматривали в Beyond Compare. Вы работаете над Beyond Compare? Отличный инструмент! Очень хорошо сделано! - person Nathan Fellman; 05.01.2011
comment
Хотя любой разработчик продукта волен проектировать свой продукт по своему усмотрению, лично я считаю нелепым отказываться от создания полезных инструментов (таких как трехстороннее слияние двоичных файлов) из-за возможности того, что кто-то может использовать их по глупости. Есть много вещей, которые я мог бы сделать, чтобы испортить свою систему или программное обеспечение моего работодателя, но я предпочитаю этого не делать, поэтому я осторожен со многими полезными и мощными инструментами, которые уже есть в моем распоряжении. БК в данном случае никому не делает одолжений. - person Brian Lacy; 05.01.2011
comment
Крейг: Я скачал пробную версию Araxis Merge, и, похоже, вы правы — Araxis Merge Pro ДЕЙСТВИТЕЛЬНО поддерживает трехстороннее слияние двоичных файлов! Довольно удивительно. Это также очень дорого (как вы сказали) и, по-видимому, не очень стабильно, так как у меня он просто разбился после открытия второго двоичного файла. ;) Но я собираюсь инвестировать в коммерческий продукт для сравнения, я бы предпочел тот, у которого есть все функции, которые мне понадобятся. - person Brian Lacy; 05.01.2011
comment
@ Натан, да, я руководитель проекта и ведущий разработчик. Спасибо за похвалу; Я рада что тебе нравится. - person Zoë Peterson; 05.01.2011
comment
@Brian: Мы не отказываемся что-то делать, мы придаем этому более низкий приоритет. Код и структуры данных для шестнадцатеричных и текстовых сравнений очень разные, и реализация шестнадцатеричного слияния требует большой работы. Его нужно запланировать, написать и протестировать, как и любую другую функцию. Не то чтобы у нас он работал, и мы просто оставили его отключенным назло. Это также не обычный запрос, и мы должны работать над тем, что хотят наши клиенты. Существует множество вещей, которые поддерживает BC, но которых нет в Araxis, например, сравнение файлов Excel или живых реестров и игнорирование переименованных идентификаторов. - person Zoë Peterson; 05.01.2011

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

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

пример трехстороннего vimdiff

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

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

Изменить:

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

xxd -r merged_xxd_file merged_binary_file

Дополнительные сведения и параметры можно найти на xxd на справочной странице.

person Nathan Fellman    schedule 30.12.2010
comment
Спасибо, но я ищу инструмент с графическим интерфейсом, например тот, что на снимке экрана в конце сообщения на форуме, на которое я ссылался. Я также должен добавить, что мне тоже нужно иметь возможность объединяться. - person Brian Lacy; 30.12.2010
comment
vim имеет графический интерфейс. Просто используйте gvim везде, где я написал vim. Режим сравнения vim позволяет очень эффективно выполнять слияние. - person Nathan Fellman; 30.12.2010
comment
Я не могу объединить двоичные файлы, поместив их в текстовый файл и объединив их. ;) Мне нужно иметь возможность объединять настоящие двоичные файлы. Но спасибо, я не знал, что у vim есть графический интерфейс Windows. - person Brian Lacy; 04.01.2011
comment
@Brian: Да, можешь, используя xxd -r. Я обновил ответ с подробностями. - person Nathan Fellman; 04.01.2011

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

person armel    schedule 10.12.2011

Последняя версия Beyond Compare кажется поддержка 3-стороннее сравнение и объединение< /а>. Кроме того, в его списке функций говорится, что он поддерживает сравнение бинарных файлов.

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

person Nathan Fellman    schedule 30.12.2010
comment
Я проверил это ранее. В BC есть Трехстороннее сравнение текста и Двоичное сравнение — это отдельные режимы, они не работают вместе. Я не могу себе представить, почему они проводят такое нелепое различие, но это именно так. :( - person Brian Lacy; 04.01.2011
comment
@Brian: вы можете использовать xxd для преобразования двоичных файлов в текст, затем использовать BC для трехстороннего сравнения, затем xxd -r для преобразования объединенного текста обратно в двоичный. - person Nathan Fellman; 04.01.2011
comment
@Brian: Алгоритмы, структуры данных и интерфейсы редактора полностью различаются между текстовым сравнением и двоичным сравнением. Это не произвольное ограничение, это вопрос приоритетов и месяцев разработки чего-то, что не является обычным запросом. - person Zoë Peterson; 04.01.2011

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

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

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

пример p4merge

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

person Nathan Fellman    schedule 15.07.2014
comment
Он не может различать двоичные файлы. Неудивительно, что многие VCS поддерживают по крайней мере сравнение изображений из коробки, потому что изображения являются распространенным типом содержимого при создании веб-сайта, публикации или пользовательского интерфейса. - person Alexey Biryukov; 28.07.2015