2010-02-08 7 views
12

Ich möchte ein 3-Wege-Merge von XHTML-Dokumente zu tun in der Lage:3-Wege-XML-Merge-Algorithmus

  1. beginnen mit einigen Original-Kopie des Dokuments
  2. Ein Benutzer bearbeitet eine Kopie des Original Dokument
  3. Ein anderer Benutzer bearbeitet eine separate Kopie des Originaldokuments
  4. Benötigt ein Tool zum automatischen (und/oder visuellen) Zusammenführen der von den beiden Benutzern vorgenommenen Änderungen.

Hinweis:

  • Ich möchte diese Funktionalität in kommerzieller Software sind: so dass ich lieber etwas, das frei-as-in-Bier ist und/oder Open Source, anstelle eines kommerziellen Werkzeug.
  • Ich vermute, es ist besser, wenn das Werkzeug XML-aware ist, als zu versuchen, Software wie diff3 zu verwenden, den implementiert 3-Wege-Merge von flachem Text
  • Da alle drei Eingangsdokumente gültig XHTML-Dokumente sind, das resultierende Ausgabedokument validieren zu müssen

tools ich habe festgestellt, umfassen:

  1. The "3DM" XML 3-way Merging and Differencing Tool
  2. Fuego Core XML Diff and Patch Tool
  3. xmldiff (in letzter Zeit von der GotDotNet Website, die heruntergefahren wurde, aber es lebt auf als Bestandteil XML Notepad vielleicht)

Die erste der oben (d "3DM") sagt explizit, dass es 3-Wege-Zusammenführungen implementiert.

Ich weiß nicht, über die anderen beiden: ob "diff" gefolgt von "patch" ist äquivalent zu einer 3-Wege-Zusammenführung, oder stattdessen, ob "Patch" das diff nur auf die ursprüngliche Datei anwenden kann (und nicht zu einer dritten, geänderten Kopie der Datei)

Können Sie zu diesem Zweck eine Software (aus der Liste oben oder anderswo) und/oder eine Beschreibung eines Zusammenführungsalgorithmus empfehlen?


Edit: Matching, diffing and merging XML ist ein weiterer Artikel aus dem Jahr 2008, die einen kurzen Überblick über verschiedene Algorithmen und Verweise auf verschiedene Implementierungen umfassen.


Edit # 2: Der Autor bestätigt, dass der Fuego Core XML Diff und Patch-Tool kann die Originaldatei nur Patche, und nicht die 3-Wege-Zusammenführung nicht implementiert.

Antwort

3

Ich kann zu Ihrer Sammlung hinzufügen DeltaXML - sie behaupten nicht diff3, aber eine Überlegung wert.

+0

Danke: Sie stellen ihre 3-Wege-Merge für XML unter http://www.deltaxml.com/dxml/products/sync/index.html – ChrisW

3

Ich habe keine freie Lösung, ich fürchte, aber Project: Merge ist ein billiges XML-Vergleichs- und Merge-Tool, das über die Befehlszeile gesteuert werden kann. Es könnte wahrscheinlich direkt in Ihre Anwendung einstecken.

+1

Es kann nicht kostenlos sein, aber bei 19 € pro Lizenz kann es auch Sein. Ein nettes kleines Werkzeug und nein, das zahlen sie mir nicht, um das zu sagen :) –

+0

Dies ist das beste Tool, das ich je gesehen habe. Sie haben es jedoch aktualisiert und es in "Oso XML Merge" umbenannt. Vielen Dank! – Adrian

1

Eine kostenlose Alternative wäre

$ xmlstarlet fo before.xml > before.xml 
$ xmlstarlet fo after.xml > after.xml 

und dann tun

$ diff before.xml after.xml 

erstellen einen Patch der XML-Differenz zu tun. Es ist kostenlos und einfach.