2008-10-21 6 views
7

Wenn zwei Benutzer dasselbe Wiki-Thema bearbeiten, welche Methoden wurden in Wikis (oder in einer ähnlichen kollaborativen Bearbeitungssoftware) verwendet, um die Bearbeitungen des zweiten Benutzers mit denen des ersten Benutzers zu verbinden?Welche Methoden verwenden Wikis zum Zusammenführen von gleichzeitigen Bearbeitungen?

würde ich eine Lösung wie folgt aus:

  • nicht
  • erforderlich macht Sperren verlieren keine Zusätze zur Seite.
  • Es kann zusätzlichen "Textbaustein" Text hinzufügen, um anzuzeigen, wo unterschiedliche Änderungen vorgenommen wurden.

(Ich habe Interesse an einer Lösung, die verwendet werden könnten this uservoice idea für Stapelüberlauf zu implementieren.)

Antwort

3

TWiki verbindet automatisch Simultaneous Edits.

TWiki ermöglicht mehrere gleichzeitige Bearbeitungen des gleichen Themas und führt dann die verschiedenen Änderungen automatisch zusammen. Sie werden wahrscheinlich nicht bemerken, dass dies geschieht, es sei denn, es gibt einen Konflikt, der nicht automatisch zusammengeführt werden kann. In diesem Fall sehen Sie möglicherweise, dass TWiki "Änderungsmarkierungen" in den Text einfügt, um Konflikte zwischen Ihren Änderungen und denen einer anderen Person hervorzuheben. Diese Änderungsmarkierungen werden nur verwendet, wenn Sie den gleichen Teil eines Themas bearbeiten wie ein anderer, und sie geben an, wie der Text aussah, welche Änderungen vorgenommen wurden und welche Änderungen vorgenommen wurden.

TWiki warnt, wenn Sie versuchen, ein Thema zu bearbeiten, das jemand bearbeitet. Es wird auch gewarnt, wenn während eines Speichervorgangs eine Zusammenführung erforderlich war.

Es wurden auch einige documentation von dieser Funktion entwickelt, die ausführlich beschreibt, wie es sich verhalten würde.

Die Grundprinzipien ich den mergeing Algorithmus bei der Codierung aufgebraucht waren:

  1. Wenn es möglich ist, dies zu verschmelzen ohne Marker Konflikt zu verwenden, tun.
  2. Wenn es möglich ist, mit Konfliktmarkern zusammenzuführen, tun Sie dies.
  3. Wenn das Zusammenführen nicht möglich ist, gewinnt das letzte Einchecken.

Es ist erwähnenswert, dass TWiki eine ähnliche Funktion hat durch denselben Nutzer innerhalb einer bestimmten Frist und diese caused a bug when happening in conjunction with a merge zum Zusammen nachfolgenden Revisionen Überlauf zu stapeln.

  1. Benutzer A bearbeitet Thema
  2. Benutzer A speichert rev N
  3. Benutzer B Thema bearbeitet, nimmt rev N
  4. Benutzer A bearbeitet Thema wieder aufgreift rev N
  5. Benutzer A speichert Änderungen; save sieht, dass die Änderung innerhalb der ReplaceIfEditedWithin liegt? Fenster
  6. Benutzer B speichert, Code sieht, dass die Rev-Nummer auf der CD hat sich nicht geändert, seit sie bearbeitet, so dass keine Notwendigkeit zum Zusammenführen erkennt.

Erwähnenswert ist auch, dass TWiki den zweiten Benutzer warnen, dass das Thema bearbeitet wird:

So erfand ich das Konzept der „Leases“. Wenn ein Thema bearbeitet wird, wird für einen bestimmten Zeitraum eine Lease über das Thema ausgeführt (Standard 1h). Wenn jemand anderes versucht zu editieren, wird ihm gesagt, dass das Thema bereits verpachtet ist, aber das hindert sie nicht daran, es zu bearbeiten. Es ist kein Schloss, es ist nur eine Art, sie zu beraten. Merge ist immer noch der wichtigste Abwicklungsmechanismus; Der Mietvertrag ist rein beratend. Wenn ein Benutzer - oder ein Plugin - sich von einem Thema zurückzieht, weil jemand einen Mietvertrag hat, dann liegt das an dem Plugin.

Die beschreibenden Kommentar in TWiki.cfg ist wie folgt:

# When a topic is edited, the user takes a "lease" on that topic. 
    # If another user tries to also edit the topic while the lease 
    # is still active, they will get a warning. The warning text will 
    # be different depending on whether the lease has "expired" or 
    # not i.e. if it was taken out more than LeaseLength seconds ago. 

zur Kenntnis, dass der Mietvertrag Terminologie nur für Entwickler ist, nicht den Endnutzern.

0

Sie können mit der ID des Benutzers ein „Schloss“ in einer anderen Datenbanktabelle schreiben und die Zeit und löschen Sie die "Sperre" (das ist kein echtes Schloss für diejenigen, die nicht verstehen), wenn die Person speichern oder nach x Minute.

Auf diese Weise, wenn jemand versucht zu bearbeiten und jemand bereits es tut. Eine Nachricht kann mit der verbleibenden Zeit angezeigt werden oder indem Sie einfach sagen, dass derzeit jemand anders den Beitrag bearbeitet.

+0

Warnung, dass ein anderer Benutzer bearbeitet, ist gut. TWiki tut in der Tat so etwas, so dass es Benutzer warnen kann, dass ein Thema bearbeitet wird, es ist nur, dass es ihnen erlaubt, es zu bearbeiten und zu speichern und versuchen wird, die Änderungen zusammenzuführen.Ich suche wirklich nach Lösungen, die versuchen, die zwei Änderungen zusammenzuführen. –

2

Meine Erfahrung mit den meisten Wiki-Software (z. B. MediaWiki) ist, dass es die Version des Dokuments, das Sie bearbeiten, verfolgt. Wenn sich das Dokument während der Bearbeitung Ihrer Zeit ändert, wird Ihre Änderung zurückgewiesen und Sie werden aufgefordert, eine manuelle Zusammenführung durchzuführen.

+0

Ich nehme an, das ist eine Alternative. Ich suche wirklich nach einer Lösung, die die zwei Änderungen automatisch zusammenführt. Erleichtert MediaWiki in irgendeiner Weise die manuelle Zusammenführung? –

+1

MediaWiki zeigt Ihnen die Diffs zwischen Ihrer Version und der zuletzt gespeicherten Version zusammen mit dem vollständigen Text beider Versionen. Vermutlich hilft Ihnen das, den Konflikt manuell zu lösen. Abhängig von der Bearbeitung, stelle ich mir vor, dass es gelegentlich einfacher ist, deine Arbeit auf den Notizblock zu kopieren und neu anzufangen. – 64BitBob

0

Nun, Sie könnten einen Mischalgorithmus verwenden, wie er von Quellcodeverwaltungssoftware verwendet wird. Sie sollten es wahrscheinlich auf Absatzebene nach Änderungen suchen lassen, um die Lesbarkeit zu gewährleisten.

Wenn es einen möglichen Konflikt gab (zB wenn zwei Benutzer denselben Absatz bearbeiten), müssten Sie wahrscheinlich beide Versionen einfach mit Textbausteinen darstellen und/oder dem zweiten und den nachfolgenden Übermittlern mitteilen, dass sich der Inhalt ihres Beitrags möglicherweise geändert hat von dem, was sie eingereicht haben.

0

Nun, ich denke, das wäre eine schreckliche, schreckliche Idee. Seien wir ehrlich: Das Zusammenführen ist im Code ziemlich heikel, und das hat zumindest Elemente, die isoliert sein könnten. Tun Sie das nicht - menschliche Intelligenz wird immer besser sein. Stattdessen versuchen Sie, es durch eine automatische Lösung zu ersetzen, die zu einer Ausgabe führt, die nicht vernünftig ist, ohne Nutzen.

+0

Die TWiki-Lösung wird heute in Hunderten von TWiki-Installationen verwendet, daher bezweifle ich, dass dies der Fall ist. Die meiste Zeit ist es in der Lage, ohne Konflikt zu verschmelzen, und wenn es nicht ist, macht es klar, was passiert ist, und macht den gesamten Inhalt zur Bearbeitung verfügbar, ohne auf ein separates diff zu schauen. –

+0

Simultane Änderungen sind in StackOverflow nicht üblich, aber es kann mühsam sein, sie zu beheben, wenn sie auftreten. (Ich habe es in der inoffiziellen FAQ gesehen.) Das größte Problem im Moment ist, dass du nicht merkst, dass es passiert ist, wenn du nicht darauf achtest. So etwas würde dich zwingen, damit umzugehen. –

+0

Ich glaube nicht, dass Sie verstehen, was ein Konflikt hier ist: Es gibt einen ganzen Raum von Änderungen, der kein Konflikt zu irgendeinem Diff-Algorithmus wäre, der ein Konflikt in der Bedeutung eines Artikels ist. Durch die Verwendung von diff zwingen Sie die Benutzer nicht, mit Konflikten umzugehen, sondern sie zu maskieren. – Marcin

0

die TWiki Antwort Bei der Erforschung ich auch über SynchroEdit gestolpert, die ein SubEthaEdit Stil Browser-basiertes gleichzeitiges Multi-User-Editor zu sein scheint. Es sieht so aus, als ob es im September 2007 aufgegeben wurde, aber es gibt Quellcode zum Download.

0

Zu Dokumentationszwecken: DokuWiki legt eine 15-Minuten-Sperre für bearbeitete Seiten fest, die bei jeder Vorschau der Bearbeitungen erneuert wird (dh 15 Minuten von der Vorschau oder dem Bearbeitungsbeginn).