Zitat von
OregonGhost:
Es geht darum, Änderungen zu erkennen. Wie, wann oder warum diese Änderungen durchgeführt wurden, spielt keine Rolle. Natürlich kann es dabei vorkommen, dass die "erkannte" Änderung nicht genau mit der tatsächlichen übereinstimmt - aber das ist vollkommen egal.
Im ersten Posting war dem so, also gehe ich erstmal davon aus, dass der TE den "Werdegang" exakt nachvollziehen will. Wer weniger will als er fragt, darf sich nicht über philosophiebeladene Antworten wundern.
Zitat von
OregonGhost:
Entscheidend ist, dass man auf Anhieb erkennt, was geändert wurde. Und die meisten der genannten Diff-Tools leisten genau das und sie raten dabei nicht.
Wie jetzt? Zeigen sie was geändert
wurde, oder welche Operationen
auch dort hin führen? Ein eklatanter Unterschied finde ich, und bislang wird das hier gerne undifferenziert betrachtet.
Zitat von
OregonGhost:
Da muss man nicht die ganze Zeit drüber reden, dass ein Tool nicht erkennen kann, wenn man ein Zeichen gelöscht und dann wieder eingetippt hat.
Und in der Bibel steht...
Zum einen ist es nie falsch sich darüber im Klaren zu werden wo die Grenzen genau liegen, und zum anderen war zumindest im Eingangsposting an keiner Stelle von Diff-Tools die Rede. Es wurde später lediglich impliziert, dass die Funktionalität wohl dem nahe kommt, mehr nicht. Und wenn ich ein Programm schreiben wollte, dass eine schon vielfach abgedeckte Funktion bietet, so würde ich zumindest versuchen das besser/schlauer zu machen - z.B. indem mein Diff-Tool eine exakte Abbildung liefert. Falsche Annahme meinerseits.
Zitat von
OregonGhost:
Es gibt nichts zu definieren, der Topic-Eröffner möchte ein Tool (schreiben), das genau das macht, was die anderen Diff-Tools auch machen.
Hast du so verstanden, ich nicht.
Zitat von
OregonGhost:
Es macht zum Beispiel auch keinen Unterschied, welche der drei Zeilen vielleicht die geänderte ist, und welche zwei gelöscht wurden. Entscheidend ist: "Links" (in der alten Datei) sind die drei Zeilen vorhanden, "rechts" (in der neuen Datei) ist nur noch eine Zeile vorhanden. Ob jetzt eine der drei als Änderung erkannt wird und zwei als Löschung, oder ob alle drei als gelöscht und die neue als hinzugekommen markiert sind (beides findet man in typischen Diff-Tools), spielt keine große Rolle. Der Benutzer weiß sofort, was geschehen ist und nur darum geht es.
Weiss er streng genommen eben nicht! Er weiss bestenfalls was geschehen sein könnte, und einen Schritt weiter sogar wie man mit den wenigsten Zwischenschritten dort hin kommen kann, aber NICHT was im Einzelnen geändert wurde. Dass das hier wohl garnicht so sehr von Interesse ist, hat der TE nirgends explizit gesagt.
--------------------------------------------------------------
Das Schlagwort von alzaimar welches mich hierzu auf eine Idee bringt: Levenshtein-Distanz
Wendet man diese nicht Zeichenweise auf einzelne Zeilen, sondern Zeilenweise auf den gesamten Text an, entstehen auf dem Weg dahin alle Informationen die hier nun geklärterweise gewünscht sind, wobei eine Änderung als Löschung+Einfügung behandelt würde. Zudem dürfte die so extrahierte Pseudo-Historie wenn nicht ganz, zumindest nah am optimalen Weg liegen. Als Bonus bekommt man am Ende sogar noch eine Maßzahl für den Grad der Differenz der Dateien.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)