Ich arbeite an einem Projekt, bei dem Menschen Geschichten einreichen und andere Leute dazu beitragen können. Anstatt einfach einen Eintrag in der Datenbank zu bearbeiten, möchte ich lieber die Änderungen speichern, die von den Benutzern vorgenommen werden, als die gesamten neuen Änderungen. Dann kann ich diffs dynamisch anwenden, wenn Leute zu einer vorherigen Version zurückkehren möchten. Ich kann auch Benutzern, die Editoren sind, einfach nur den geänderten Text präsentieren, damit sie direkt zu den Änderungen springen können.Wie kann ich string und Patch/merge Zeichenfolgen anstelle von Dateien?
Ich bin mir bewusst, wie man Diff-Dateien nimmt und andere Dateien mit ihnen patcht. Aber ich mache eine Web-App mit Python und Django, und ich werde all diese Diffs in einer MySQL-Datenbank speichern. Angesichts der Tatsache, dass die Leistung für diese App kein großes Problem darstellt, bin ich bereit, die Daten aus der DB zu ziehen, Dateien zu erstellen und git diff
und patch
für diese Dateien auszuführen.
Gibt es einen besseren Weg als neue Dateien zu erstellen und sie jedes Mal zu löschen, wenn ich eine neue Version erstellen oder einen neuen Diff anwenden möchte? Gibt es eine Möglichkeit, Diffs auf einem geraden Text statt auf Dateien auszuführen? Z.B. Setzen von Variablen in bash, um den Inhalt von (was wäre) eine Datei (aber ist eigentlich Daten aus der DB), und läuft git diff
auf ihnen? Ich möchte diese Aktionen aus einer Python-Datei steuern, nachdem der Benutzer ein Formular übermittelt hat.
Ich bin wirklich nur auf der Suche nach einem guten Weg, um mit diesem Problem zu beginnen, so würde jede Hilfe sehr geschätzt werden.
Vielen Dank für Ihre Zeit,
ParagonRG
Sie können sicher die Grundsätze der Speicherung Diffs anstelle des vollständigen Wortlauts in der Datenbank übernehmen, aber es ist ein wenig seltsam, dass Sie eine VCS für den Zweck verwenden wollen würde. .. (haben Sie sich http://docs.python.org/library/difflib.html angesehen)? – geoffspear
Danke, schau dir das jetzt an! – Paragon
Leider difflib war nicht erlaubt, Text von Diffs neu zu erstellen, es sei denn Diffs, die den gesamten Text und seine Änderungen speichern. Ich habe deshalb ein Modul dafür gebaut; Bitte sehen Sie meine Antwort unten. – Paragon