Ich suche nach einer C- oder C++-Diff-Bibliothek. Ich weiß, dass ich das Unix benutzen kann diff
Werkzeug in Kombination mit system
oder exec
, aber ich möchte wirklich eine Bibliothek. Es wäre praktisch, wenn die Bibliothek auch Patches ausführen könnte, wie das Unix patch
Werkzeug.
Gibt es eine Möglichkeit, Dateien von C++ zu unterscheiden?
Matt Fichmann
Ich glaube, ich habe endlich eine gute Lösung gefunden:
Das DTL – Diff-Vorlagenbibliothek — Lernprogramm
Es unterstützt Patches. Ich musste “diff.cpp” in Google eingeben, um es zu finden. Hoffentlich funktioniert es!
Es scheint wie die Google Diff-, Match- und Patch-Bibliotheken sind, was Sie brauchen.
-
Eh, aber die C++-Version dieser Bibliothek ist von Qt abhängig. Ich brauche eine Diff/Patch-Bibliothek für eine Nicht-GUI-Anwendung.
– Matt Fichmann
20. September 2009 um 23:46 Uhr
-
Qt hat Nicht-GUI-Teile und kann in einer Konsolenanwendung verwendet werden.
– Rechnung
24. September 2009 um 17:03 Uhr
-
Qt ist eine große Bibliotheksabhängigkeit, die ich nicht haben möchte. Warum hat der Autor STL nicht verwendet?
– Matt Fichmann
29. September 2009 um 20:48 Uhr
-
-
Das ist definitiv besser als DTL (das anscheinend keinen Per-Line-Diff-Algorithmus bietet)
– jpo38
24. November 2016 um 20:29 Uhr
Dies ist eine Implementierung einer “Lösung für SES/LCS mit der linearen Raumverfeinerung von Hirschberg, wie in der folgenden Veröffentlichung beschrieben”:
E. Myers, „An O(ND) Difference Algorithm and Its Variations“, Algorithmica 1, 2 (1986), 251-266.
http://www.cs.arizona.edu/people/gene/PAPERS/diff.ps
Gefunden auf der Wikipedia-Seite zu diff.
Das ist jedoch nur zum Finden eines Diffs, nicht zum Anwenden als Patch. Ich denke, dass die Anwendung eines Patches tatsächlich ein schwierigeres Problem ist; wegen Konfliktgefahr. Es würde irgendeine Form von benutzerkontrollierendem Feedback-Mechanismus benötigen, um Konflikte zu lösen.
-
Dies ist die beste Antwort, die ich bisher gegeben habe, aber ich hätte auch gerne eine Patch-Bibliothek. Ich warte noch ein wenig ab, ob noch jemand eine Antwort hat.
– Matt Fichmann
24. September 2009 um 16:48 Uhr
-
Die Datei
diff.c
am Anfang verlinkt scheint verschwunden zu sein. (Es ist aber immer noch im Google-Index …)– Tanuva
24. Juli 2017 um 9:02 Uhr
-
@unwind Oh mein Gott, es tut mir leid. Nur der https-Transport führt zu einem 404-Fehler. Das Deaktivieren von HTTPS Everywhere führt dazu, dass die Datei geladen wird.
– Tanuva
24. Juli 2017 um 14:26 Uhr
Es gibt einen, der Teil davon ist Quecksilber. Es existiert als C-Code, der als Python-Erweiterung entworfen wurde, aber es könnte wahrscheinlich ziemlich einfach extrahiert werden. Ich glaube, es kann auch binäre Diffs machen.
Die relevanten .c-Dateien sind mercurial/bdiff.c, mercurial/mpatch.c und möglicherweise mercurial/diffhelpers.c.
Subversion enthält eine Bibliothek libsvn_diff
.
Tomate
Auch ziemlich unauffindbar in Google, es stellt sich heraus, dass Gnulib eine hat Diff-Modul. Dieser scheint ausreichend für das zu sein, wofür ich eine Diff-Bibliothek wollte. Es scheint jedoch kein Patch-Modul zu haben.
Es scheint mir, dass eine Diff-Bibliothek ziemlich verbreitet wäre, aber Google hat noch keine gute Antwort gefunden.
– Matt Fichmann
21. September 2009 um 19:28 Uhr
Ein ausgezeichneter Ansatz wurde für C/C++ in einem ähnlichen Beitrag bereitgestellt.
– Wolke
22. Februar 2017 um 22:53 Uhr