Ich durchstöbere die Ergebnisse von Google kostenlos (open source) Java diff libraries, und es scheint eine ganze Reihe davon zu geben (einige von ihnen arbeiten sogar mit generischen Objekten und nicht nur mit Strings).
Bevor ich viele Suchergebnisse durchforste und nicht finde, wonach ich suche, frage ich zuerst:
Unterstützt irgendeine dieser diff-Bibliotheken ein Feature wie cvs annotieren oder SVN-Schuld? Ich möchte
String[]
an eine Funktion String[]
an eine Funktion zu übergeben, bis entweder ich sie alle aufgebraucht habe, oder die Bibliothek sagt mir, dass keine ursprüngliche Zeile unbemerkt geblieben ist (das letzte Ding ist nicht wirklich ein Muss, aber sehr nützlich seit das Abrufen älterer Versionen von String[]
teuer ist, möchte ich so früh wie möglich aufhören) ìnt[]
gibt, die mir für jede Zeile der aktuellen Version sagt, in welcher Version sie zuletzt geändert wurde oder ob sie überhaupt nicht geändert wurde (dh zuletzt in der allerersten Version geändert). Unterstützung für Objekte, die nicht String
s sind, ist nett, aber kein Muss. Und wenn die API nicht genau so ist, könnte ich damit leben.
Wenn es keine gibt, kann jemand eine erweiterbare diff-Bibliothek vorschlagen, in der diese Funktion leicht hinzugefügt werden kann, vorzugsweise eine, die diese Funktion als Beitrag erhalten möchte (und keine Tonnen von Papierkram benötigt, um Beiträge zu akzeptieren) , wie das GNU-Projekt)? Ich würde freiwillig (zumindest versuchen), es dort hinzuzufügen, dann.
Ich habe beschlossen, es selbst für die Bibliothek von java-diff-utils von Dmitry Naumenko zu implementieren:
%Vor%Ich habe es auch an Dmitry Naumenko geschickt (mit ein paar Testfällen), falls er es aufnehmen will.
Ich könnte mich irren, aber ich denke, Annotate / Tadel braucht ein Versionskontrollsystem, da es auf den Verlauf der Datei zugreifen muss. Eine generische diff-library kann das nicht. Wenn dies Ihr Ziel ist, sehen Sie sich die Bibliotheken an, die mit diesen VCS arbeiten, wie svnkit . Wenn dies nicht der Fall ist, kann eine solche Bibliothek ein guter Ausgangspunkt dafür sein, wie Annotate / Tadel gemacht wird, sehr oft beinhaltet dies die Differenzen in der Kette aller Versionen einer Datei.
Sie können verwenden xwiki-commons-blame-api . Es verwendet tatsächlich Code aus der angenommenen Antwort dieses Threads ( Danke an Michael Schierl für die Freigabe dieses Codes in StackOverflow )
Sie können in es ist Komponententests.
Oder in Scala wie:
%Vor%