Quelles méthodes les wikis utilisent-ils pour fusionner des éditions simultanées?

StackOverflow https://stackoverflow.com/questions/223040

  •  03-07-2019
  •  | 
  •  

Question

Si deux utilisateurs modifient le même sujet de wiki, quelles méthodes ont été utilisées dans les wikis (ou dans un logiciel d'édition collaborative similaire) pour fusionner les modifications du deuxième utilisateur avec le premier?

Je voudrais une solution qui:

  • ne nécessite pas de verrouillage
  • ne perd aucun ajout à la page.
  • Il peut ajouter des "&"; casseroles "& extra; supplémentaires texte indiquant les modifications apportées.

(Je suis intéressé par une solution qui pourrait être utilisée pour mettre en œuvre cette idée de service utilisateur pour le dépassement de pile.)

Était-ce utile?

La solution

TWiki fusionne automatiquement Modifications simultanées .

  

TWiki permet plusieurs éditions simultanées du même sujet, puis fusionne automatiquement les différentes modifications. Vous ne remarquerez probablement même pas ce qui se passe sauf s’il existe un conflit qui ne peut pas être fusionné automatiquement. Dans ce cas, vous pouvez voir que TWiki insère des "marques de modification". dans le texte pour mettre en évidence les conflits entre vos modifications et celles d'une autre personne. Ces marques de modification ne sont utilisées que si vous modifiez la même partie d'un sujet que quelqu'un d'autre. Elles indiquent l'aspect du texte, les modifications apportées par l'autre personne et les modifications que vous avez apportées.

     

TWiki vous avertira si vous tentez de modifier un sujet que quelqu'un d'autre est en train de modifier. Il vous avertira également si une fusion était requise lors d'une sauvegarde.

Il y avait également de la documentation de cette fonctionnalité en cours de développement, détaillant son utilisation. se comporterait.

  

Les principes de base que j'ai utilisés pour coder l'algorithme de fusion sont les suivants:

     
      
  1. S'il est possible de fusionner sans utiliser de marqueurs de conflit, faites-le.
  2.   
  3. S'il est possible de fusionner à l'aide de marqueurs de conflit, faites-le.
  4.   
  5. S'il n'est pas possible de fusionner, l'enregistrement le plus récent l'emporte.
  6.   

Il convient de noter que TWiki possède une fonctionnalité similaire à Stack Overflow pour réduire les révisions ultérieures effectuées par le même utilisateur dans un certain délai. a provoqué un bogue lorsqu’il se produisait en même temps qu’une fusion .

  
      
  1. Utilisateur A modifie le sujet
  2.   
  3. L'utilisateur A enregistre le rev N
  4.   
  5. L'utilisateur B modifie le sujet, récupère le rev N
  6.   
  7. L'utilisateur A édite à nouveau le sujet, récupère le rev N
  8.   
  9. l'utilisateur A enregistre les modifications; save voit que le changement est dans ReplceIfEditiedWithin? fenêtre, donc ne pas incrémenter le nombre de tours
  10.   
  11. L’utilisateur B enregistre, le code voit que le nombre de tours sur le disque n’a pas changé depuis le début de la modification . Par conséquent, il ne détecte pas la nécessité de fusionner.
  12.   

Il convient également de noter que TWiki avertira le deuxième utilisateur que le sujet est en cours de modification:

  

J'ai donc inventé le concept de "baux". Lorsqu'un sujet est édité, un bail est pris pour le sujet pour une période de temps déterminée (1h par défaut). Si quelqu'un tente de modifier le texte, on lui dit qu'il existe déjà un bail sur le sujet, mais cela ne l'empêche pas de le modifier. Ce n'est pas un verrou, c'est juste une façon de les conseiller. La fusion est toujours le principal mécanisme de résolution; le bail est purement consultatif. Si un utilisateur - ou un plugin - choisit de se retirer d'un sujet parce que quelqu'un a un contrat de location, eh bien, c'est le plugin qui décide.

     

Le commentaire descriptif dans TWiki.cfg est le suivant:

   # 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.

notez que la terminologie du bail concerne uniquement les développeurs, et non les utilisateurs finaux.

Autres conseils

Mon expérience avec la plupart des logiciels Wiki (par exemple, MediaWiki) est qu’il suit la version du document que vous éditez. Si le document change pendant votre édition, votre modification est rejetée et vous êtes invité à effectuer une fusion manuelle.

Vous pouvez écrire un "verrou". dans une autre table de base de données avec l'id de l'utilisateur et l'heure et supprimez le "verrou". (ce n'est pas un vrai verrou pour ceux qui ne comprennent pas) lorsque la personne enregistre ou après x minute.

De cette façon, lorsque quelqu'un essaie de modifier et que quelqu'un le fait déjà. Un message peut apparaître avec le temps restant OU en indiquant simplement que quelqu'un d'autre est en train de modifier le message.

Vous pouvez utiliser un algorithme de fusion, semblable à celui utilisé par le logiciel de contrôle de source. Vous voudrez probablement faire vérifier les modifications au niveau du paragraphe, afin de maintenir la lisibilité.

En cas de conflit potentiel (par exemple, deux utilisateurs modifiant le même paragraphe), vous devrez probablement simplement présenter les deux versions avec un texte passe-partout et / ou informer le second auteur et les auteurs suivants que le contenu de leur message a peut-être changé. ce qu'ils ont soumis.

Eh bien, je pense que ce serait une idée terrible et terrible. Soyons honnêtes: la fusion est assez risquée dans le code et comporte au moins des éléments pouvant être isolés. Ne faites pas cela - l'intelligence humaine sera toujours meilleure. Au lieu de cela, vous essayez de le remplacer par une solution automatique qui peut entraîner une sortie non saine, sans aucun avantage.

En recherchant la réponse TWiki, je suis également tombé sur SynchroEdit , qui semble être un SubEthaEdit éditeur multi-utilisateur simultané basé sur un navigateur. Il semble que le logiciel ait été abandonné vers septembre 2007, mais le code source est disponible au téléchargement.

Par souci de documentation: DokuWiki place un verrou de 15 minutes sur les pages modifiées, qui est renouvelée chaque fois que vous le souhaitez. prévisualisez vos modifications (c.-à-d. 15 minutes de votre aperçu ou de votre modification)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top