2010-12-30 9 views
5

Ich habe eine Reihe von binären Konfigurationsdateien mit jeweils drei Versionen - ein Original und zwei unterschiedlich modifizierte Versionen jeder Datei. Ich muss in der Lage sein, die Unterschiede zwischen den beiden Versionen sowie das Original gleichzeitig zu sehen.Tool für 3-Wege-Binär (Hex) Dateivergleich?

Was ich brauche, ist ein Drei-Wege-Diff-Tool für Binärdateien. Durch eine ziemlich anstrengende Google-Suche, kam ich schließlich auf eine Screenshot einer Anwendung, die genau das tut, was ich brauche - leider, die Forum-Beitrag enthält das Bild nicht erwähnen, welche Anwendung sie verwenden:

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

Kann mir jemand in Richtung einer (Windows-) Anwendung zeigen, die einen binären sicheren (hex) Vergleich von drei Binärdateien bietet?

+0

BTW, ich bin wirklich auf der Suche nach einem GUI-Tool. Ich würde mich freuen, wenn mir jemand den Namen dieses Tools im letzten Screenshot in dem Forum-Post, auf den ich verwiesen habe, sagen könnte. –

Antwort

2

Der Screenshot von Araxis Merge ist. Ihre Pro-Edition (270 US-Dollar) unterstützt 3-Wege-Vergleiche.

+0

Dies unterstützt nicht 3 Kombinieren von binären Dateien über den Link: * "Zusätzlich zum bidirektionalen Dateivergleich ermöglicht die Professional Edition von Merge das Vergleichen (** und, für Textdateien, Zusammenführen **) von drei Dateien" *. –

+0

Ich habe den Kommentar des OP in Ihrem Beitrag nicht gesehen, nun, es ist der abgebildete, und es macht 3-way-binäre Vergleiche. Ich würde erwarten, dass die binäre Zusammenführungsunterstützung ziemlich selten ist, da es sehr leicht wäre, Korruption einzuführen sicherlich der Grund, warum wir nie c Gesucht für in Beyond Compare. –

+0

@Craig: * "** wir haben nie in Beyond Compare" * berücksichtigt. Arbeiten Sie an Beyond Compare? Tolles Werkzeug! Sehr gut gemacht! –

8

Vim verfügt über ein integriertes Diff-Tool, das eine beliebige Anzahl von Dateien vergleichen kann. Es läuft auch unter Windows. Sie finden es unter http://vim.org.

Die Standard-Installation von Vim für Windows enthält xxd, die Sie binäre Dateien als Text sehen können:

So zum Beispiel, wenn Sie versuchen:

xxd xxd.exe 

Sie erhalten:

0000000: 4d5a 9000 0300 0000 0400 0000 ffff 0000 MZ.............. 
0000010: b800 0000 0000 0000 4000 0000 0000 0000 [email protected] 
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.../.../.../... 

etc ...

So können Sieverwenden 0 dump Ihre Binärdateien in Textdateien:

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

Und dann vim in Diff-Modus laufen:

vim -d orig mod1 mod2 

Und das wird Ihnen etwas wie folgt aus:

example of 3-way vimdiff

(Dieser Screenshot wurde von here übernommen und ist nicht mehr als eine Illustration, wie ein 3-Wege-Diff in VIM aussehen wird)

Alle diese Tools sind in Windows verfügbar, so dass sie Ihr Problem lösen sollten.

Edit:

Nachdem Sie die Ergebnisse der xxd verschmelzen, können Sie den Hex-Dump in eine binäre Datei konvertieren xxd -r mit:

xxd -r merged_xxd_file merged_binary_file 

Sie können weitere Informationen und Optionen finden Sie in xxd's manpage

+1

Danke, aber ich bin auf der Suche nach einem GUI-Tool, wie dem auf dem Screenshot am Ende des Forumsbeitrags, auf den ich verwiesen habe. Ich sollte auch hinzufügen, dass ich auch zusammenführen kann. –

+1

'vim' hat eine gui. Benutze 'gvim' einfach überall, wo ich' vim' geschrieben habe. 'vim's diff-Modus ermöglicht sehr effizientes Zusammenführen. –

+0

Ich kann Binärdateien nicht zusammenführen, indem ich sie in eine Textdatei ablege und diese fusioniere. ;) Ich muss binäre Dateien zusammenführen können. Aber danke, ich wusste nicht, dass vim eine Windows GUI hat. –

0

Die neueste Version von Beyond Compare scheintzu unterstützen. Darüber hinaus sagt es feature list, dass es den Vergleich von Binärdateien unterstützt.

Beachten Sie, dass dies nicht freie Software ist :-)

+1

Ich habe das vorher überprüft. BC hat * Text 3-way Compare * und es hat * Binary Compare * - das sind separate Modi, sie arbeiten nicht zusammen. Ich kann mir nicht vorstellen, warum sie so eine lächerliche Unterscheidung machen, aber so ist es eben. :( –

+0

@Brian: Sie können 'xxd' verwenden, um die Binärdateien in Text zu konvertieren, dann BC für 3-Wege-Vergleich verwenden, dann' xxd -r', um den zusammengeführten Text wieder in Binärwerte umzuwandeln. –

+1

@Brian: Die Algorithmen, Datenstrukturen und Editorschnittstellen unterscheiden sich völlig zwischen einem Textvergleich und einem binären. Es ist keine willkürliche Einschränkung, es ist eine Frage der Prioritäten und Monate der Entwicklung für etwas, das keine allgemeine Anfrage ist. –

1

Sie können einen Blick auf ECMerge (ein Werkzeug, das ich arbeite), hat es eine 2 und 3-Wege-diff von Binärdateien (HEX + ASCII). Es gibt keine Zusammenführungsfunktion. Sie können leicht von einem geänderten Bereich in einen anderen wechseln und lange Zonen komprimieren (lange Einfügungen, Änderungen oder unverändert).

0

Ich wurde vor kurzem in p4merge eingeführt, die auch Binärdateien zu unterstützen scheint.

Es dauert 3 Dateien als Eingabe: Das Original und zwei Ableitungen. Es zeigt sie Seite an Seite, mit einem vierten Fenster, das die zusammengeführte Datei zeigt, mit Bearbeitungsfunktionen und Konfliktlösung.

Ich habe dies nur verwendet, um zwei Zweige einer großen Codebasis zusammenzuführen, und es war sehr praktisch.

p4merge example

Jetzt habe ich es nicht benutzt binäre Dateien zusammenführen, aber es unterstützt Bilder diffing, so würde ich überrascht, wenn Binärdateien nicht unterstützt wurden.

+0

Es kann keine Binärdateien unterscheiden. Keine Überraschung, viele VCS-Dateien unterstützen zumindest das Differieren von Bildern aus der Box, da Bilder bei der Erstellung von Websites, Publikationen oder Benutzeroberflächen häufig verwendet werden. –