Ein Edit-Konflikt entsteht, wenn mehr als ein Benutzer dieselbe Seite zur selben Zeit ändert. Was passiert, wenn Benutzer A und B dieselbe Seite verändern, wenn zuerst A seine Version der Seite speichert und danach B? Werden die Änderungen von A dann durch die Version von B überschrieben?
Wenn das Wiki beim Speichern einer Seite feststellt, dass dieselbe Seite in der Zwischenzeit von einem anderen User ebenfalls verändert worden ist, versucht es den Edit-Konflikt nach folgender Strategie zu lösen:
Zunächst erstellt das Wiki intern die Usprungsversion, von der aus A und B ihre Änderungen vorgenommen haben. Dann berechnet das Wiki, welche Änderungen sowohl A als auch B an dieser Ursprungsversion vorgenommen haben. Diese gemeinsamen Änderungen werden nun vom Wiki an der Ursprungsversion vorgenommen und das Resultat wird als neue Version der Seite gespeichert.
Das Wiki ist also in der Lage, Edit-Konflikte zu lösen, indem es gleichzeitig vorgenommene Änderungen von mehreren Benutzern automatisch zusammenführt.
Solange mehrere User Änderungen an verschiedenen Zeilen derselben Seite zur selben Zeit vornehmen, kann das Wiki alle Änderungen problemlos zusammenführen. Was aber, wenn mehrere Benutzer gleichzeitig Änderungen an derselben Zeile vornehmen? Welche Version soll das Wiki dann behalten?
In diesem Fall ist es dem Wiki nicht möglich den Konflikt zu lösen. In einem solchen Fall schreibt das Wiki alle Änderungsvarianten auf die neue Seite und markiert den Konflikt gut sichtbar. Einer der Benutzer muss dann die Seite erneut editieren und den Konflikt von Hand lösen, indem er sich für eine Variante entscheidet und die Wiki-Markierungen löscht.
Bei nicht automatisch lösbaren Edit-Konflikten markiert das Wiki die Konflikt-Stellen und zeigt die Wiki-Seite in einem speziellen Konflik-Modus an, bis die Konflikte von einem der User gelöst worden sind.
Beispiel
Wenn du die Seite im obigen Beispiel bearbeitest, siehst du die Makrierungen, welche das Wiki an den verschiedenen Zeilen angebracht hat:
Diese Zeile wurde nicht verändert c<<<Änderungen von Benutzer A c>>>Benutzer B macht diese Änderung d<<<Benztzer A hat diese Zeile gelöscht c>>>Benutzer B hat diese Zeile geändert i<<<Benutzer A hat hier eine Zeile eingefügt i>>>Benutzer B hat hier ebenfalls eine Zeile eingefügt Ende
Entscheide dich für eine der vorgeschlagenen Versionen, lösche die nicht benötigten Zeilen und entferne die Markierungen am Anfang der Zeilen.
c<<< | Benutzer A hat diese Zeile geändert (c = changed) |
c>>> | Benutzer B hat diese Zeile geändert |
d<<< | Benutzer A hat diese Zeile gelöscht (d = deleted) |
d>>> | Benutzer B hat diese Zeile gelöscht |
i<<< | Benutzer A hat diese Zeile eingefügt (i = inserted) |
i>>> | Benutzer B hat diese Zeile eingefügt |
Solange es solche Markierungen in einer Seite hat, wird die Seite nicht normal dargestellt, sondern im Konflikt-Modus.