Frage

Ich habe mit der Erstellung eines Werkzeugs damit beauftragt, die die Konfigurationsdateien für mein Unternehmen das Produkt Vergleichen und Zusammenführen können. Die Konfigurationen werden entweder als XML oder URL-kodierte Strings gespeichert. Ich suche nach einer Bibliothek, vorzugsweise Open Source mit einer Lizenz kompatibel mit kommerzieller Software, die diese diffs tun kann. Unsere App ist in C ++ geschrieben, so C ++ Bibliotheken am besten sein würde, aber ich bin bereit, in Bibliotheken zu suchen, die C # -spezifische sind, da ich einen Wrapper schreiben kann, die es in C ++ über COM aussetzt. Drei-Wege-diffs wäre ideal, aber zwei-Wege ist akzeptabel. Wenn es ein Verständnis von XML hat, das wäre auch ein Plus (da XML-Knoten ohne Änderung des Dokuments neu angeordnet werden können, etc). Jede Bibliothek Vorschläge? Soll ich auch meine eigenen diff-Tools in der Hoffnung, betrachte das Schreiben davon semantische Wissen unserer Formate geben?

Danke href="https://stackoverflow.com/questions/479654/java-library-for-free-text-diff"> diese ähnliche Frage diese google-Bibliothek , was wirklich toll scheint, aber ich bin noch auf der Suche für andere Optionen. Es scheint auch die Differentiale im HTML-Format (mit dem <ins> und <del> Tags, die ich nicht bestanden hätte wissen, bevor ich es entdecken) in die Lage seines Ausgang, der wirklich nützlich sein könnte, aber es scheint nur eine einheitliche diff zu sein. Ich werde die Ergebnisse in einem Web-Browser anzeigen müssen, und wahrscheinlich haben eine Schnittstelle bauen für die Verschmelzungen als auch im Browser zu tun. Ich erwarte nicht, eine Bibliothek der Lage sein, mit diesen Aufgaben zu helfen, aber es muss Ausgabe in einem Format produzieren, das zugänglich ist ich dies davon auf dem Aufbau. Ich bin zur Zeit etwas Vorstellungsvermögen entlang der Linien von TortoiseMerge (Side-by-Side-Diffs, nicht einheitlich), ausgenommen browserbasiert. Irgendwelche Tipps / Tricks / Design-Ideen, wie dies zu präsentieren wäre zu schätzen.

War es hilfreich?

Lösung

, um die XML Für diffing ich vorschlagen werde, dass Sie es normalisieren zuerst: sortieren alle Elemente in alphabetischer Reihenfolge, erzeugen dann einen Strom von Token / xml, die das Originaldokument darstellt, ist aber unabhängig von der ursprünglichen Formatierung. Nach dem diff läuft, analysiert das Ergebnis einen Baum zu bekommen enthält, was hinzugefügt / entfernt.

Andere Tipps

Subversion kommt mit libsvn_diff und libsvn_delta lizenziert unter der Apache Software License.

Hier ist eine C ++ Bibliothek, die, was der Autor nennt halbstrukturierten Daten diff kann. Es befasst sich gut mit HTML und XML. Da Ihre Daten XML wäre es sehr viel Sinn machen diese Klartext diff stattdessen zu verwenden. Dies ist insbesondere dann der Fall, wenn die Dateien Maschine erzeugt werden.

Ich bin derzeit versucht, diese Bibliothek zu verwenden, um ein Tool zu erstellen, die Visual Studio-Projektdateien diffs. Diese sind im Allgemeinen XML-Dateien und die Anwendung eines einfachen Diff-Tool wie Winmerge ist zu schmerzhaft, weil Visual Studio ziemlich mucks bis die gesamte Datei von crazy Neuordnungs. Die Idee ist, eine Art von strukturiertem diff zu tun, um das Problem zu lösen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top