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.
Warum können Sie keine der bereits vorhandenen Wiki-Engines für Ihr Collaboration-Tool verwenden? – lothar
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
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