1

Ich arbeite an einem Projekt, das ein Online-Collaboration-Tool erstellt. Mit Blick auf Wikipedia habe ich bemerkt, dass benutzergenerierte Wiederholungen einer Seite leicht miteinander verglichen werden können; Der Vergleich hebt die Unterschiede hervor.Versionsvergleich von benutzergeneriertem und geändertem Inhalt

Konzeptionell, was müsste ich implementieren, um ziemlich genau das Gleiche zu tun?

+1

Warum können Sie keine der bereits vorhandenen Wiki-Engines für Ihr Collaboration-Tool verwenden? – lothar

+0

Die Komplexität unseres Tools geht ein bisschen weiter. Frage ist, depite das, sind diese Motoren gut? Ich möchte nicht das millionste Wiki erstellen. – Kriem

+1

Oh ja, es gibt * viele * gute Wiki-Engines. Erfinde das Rad nicht neu. Wenn Sie dies tun, möchten Sie vielleicht den Bearbeitungsbetrachter auf SO betrachten, er klingt ähnlich wie Sie ihn beschreiben. – Zifre

Antwort

1

vom guten Rat Composited:

Der einfachste Weg ist nur Motoren eine der bereits bestehenden Wiki zu verwenden. Es gibt viel von guten Wiki-Engines. Erfinde das Rad nicht neu.

Zum Beispiel ist StackOverflow selbst ein speziell erstelltes Wiki. Sehen Sie sich den Bearbeitungsbetrachter in Stack Overflow an, um zu sehen, wie gut seine Funktionalität mit der in der Frage beschriebenen übereinstimmt.

0

Sie benötigen einen versionierten Datenspeicher und einen Diffing-Algorithmus.

Speichern Sie Versionen Ihrer Ressourcen, indem Sie jeder Ressource eine Revisionsnummer geben. Wenn ein Benutzer eine Ressource bearbeitet, anstatt die Ressource zu ersetzen, speichern Sie die Änderung als neuen Eintrag in Ihrem Datenspeicher mit einer neuen, höheren Revisionsnummer. Wenn Sie die Ressource abrufen möchten, geben Sie die mit der höchsten Revision zurück.

Anstelle einer Revisionsnummer können Sie Zeitstempel verwenden. Zeitstempel werden nicht nur immer erhöht, sondern die Revisionsnummer selbst kann verwendet werden, um festzustellen, wann die Ressource geändert wurde.

Wählen Sie einen Diff-Algorithmus, der darauf basiert, wie Sie die Ressourcen speichern. Wikitext ist normalerweise zeilenweise. Wenn Benutzer das bearbeiten, wäre es sinnvoll, ein zeilenweises Diff wie das Standard-Unix-Dienstprogramm diff zu verwenden. Wenn es sich bei den Ressourcen um XML handelt, möchten Sie vielleicht einen XML-spezifischen Diff-Algorithmus finden, damit für die Benutzer klar ist, wo die Unterschiede liegen.

Verwandte Themen