如果两个用户编辑的同一wiki主题,什么方法已经使用wiki(或类似的协作编辑软件)合并的第二次用户的编辑内容与第一次?

我想要一个解决方案:

  • 不需要锁定
  • 不会失去任何增加的网页。
  • 它可能增加额外的"样板文件"的文字,以表明不同的更改的时间。

(我感兴趣的解决方案可能被用于实施 这报纸,一目了然的想法 用于堆叠的溢出。)

有帮助吗?

解决方案

TWiki 自动合并 同时编辑.

TWiki允许多个同编辑的同一主题,然后合并不同的自动改变。你可能甚至不会注意到这种情况发生,除非有冲突,不能以合并。在这种情况下,你可以看到TWiki插入"更改标记"入文本的突出之间的冲突的编辑和另一个人的。这些改变标志着仅仅使用,如果你的编辑的同一部分的主题作为其他人,他们表示什么使用的文本来看起来像什么其他人的编辑,并且什么您做的编辑。

TWiki会警告如果你试图编辑一个主题,有人编辑。它也将发出警告,如果一个合并过程中需要一个保存。

还有一些 文档 从这个功能正在制订详细说明它将如何行事。

基本原则,我使用的编码的mergeing算法是:

  1. 如果可以合并不利用冲突标记,这样做。
  2. 如果可以合并使用冲突标记,这样做。
  3. 如果这是不可能的合并,那么最近签胜利。

值得注意的是,TWiki具有类似的特征堆溢出于崩溃后修订的同一用户在某个时限内和这个 引起了一个错误,当发生在结合与合并.

  1. 用户的一个主题编辑
  2. 用户可以节省转N
  3. B用户编辑的主题,拿起转N
  4. 用户的一个主题编辑再次拿起转N
  5. 用户节省了变化;保存看到的改变是在ReplceIfEditiedWithin?窗口, 这样不会增加的转数
  6. 用户B节省,代码看到 牧师数量上盘并没有改变,因为他们开始编辑 所以没有检测到需要合并。

还值得注意的是,TWiki会发出警告,第二个用户,这一专题是正在编辑:

所以我发明了的概念,"出租".当一个主题是编辑,租约是在题为固定的时间内(默认1h)。如果有人试图编辑,他们被告知,已经有一个租赁的主题,但是,这并不阻止他们从编辑。这不是锁,它只是一种方式提供咨询意见。Mergeing仍然是首要的解决机制;这种租赁是纯粹的咨询。如果一个用户或一个插件的选择背离了主题,因为有人租赁出上它,好,这是最多的。

描述性评论中TWiki.cfg如下:

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

注意到,租赁的术语仅用于开发人员不端用户。

其他提示

我的经验与最Wiki软件(例如修订)的是,它跟踪文档的版本你的编辑。如果该文件的更改在你的时间编辑,您改变被拒绝并提示执行手工合并。

你可以写"锁定"在一个其他数据库表与标识的用户和时间,并删除"锁定"(这是不是一个真正的锁定对于那些不了解)当一个人保存或之后的x分钟。

这样,当有人试图编辑和有人已经这样做。消息可能出现的剩余时间或者通过只是告诉别人是当前正在编辑的职位。

好吧,你可以使用一个合并的算法,如使用过的源的控制软件。你可能会想让它检查对于改变在该段落的水平,以帮助维持可读性。

如果存在潜在冲突的(例如两个用户编辑的同一段)的,你可能会需要的只是本两种版本的样板文本和/或通知的第二次和随后的提交人的内容他们的岗位可能具有改变从什么,他们提交的。

现在好了,我认为,这将是一个可怕的,可怕的想法。让我们实话实说:合并是很危险的代码中,至少有素,可能是孤立的。不要这样做-人类的智慧将永远是更好的。而不是你是试图取代它与一个自动解决方案,结果产出是不健全的,没有任何好处。

在研究TWiki回答我也偶然发现了 SynchroEdit 这似乎是一个 SubEthaEdit 风格基于浏览器的同时进行的多用户编辑器。它看起来像它可能已被抛弃围绕九月2007年,但有源代码可供下载。

对于文件的缘故 DokuWiki 地方有15分钟内锁上编辑的网页,其获得再次当你预览你的编辑(ie。15分钟您的预览,或编辑开始)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top