如果两个用户编辑相同的wiki主题,那么在wiki(或类似的协作编辑软件)中使用了哪些方法来合并第二个用户的编辑与第一个用户的编辑?
我想要一个解决方案:
(我对可用于实现堆栈溢出的用户语音想法的解决方案感兴趣.)
TWiki 允许对同一主题进行多个同时编辑,然后自动合并不同的更改。您可能甚至不会注意到这种情况的发生,除非存在无法自动合并的冲突。在这种情况下,您可能会看到 TWiki 在文本中插入“更改标记”,以突出显示您的编辑与其他人的编辑之间的冲突。仅当您与其他人编辑主题的相同部分时,才会使用这些更改标记,它们指示文本过去的样子、其他人的编辑内容以及您的编辑内容。
如果您尝试编辑其他人正在编辑的主题,TWiki 将发出警告。如果在保存期间需要合并,它还会发出警告。
还有一些来自该功能的文档正在开发中,详细说明了它的行为方式。
我在编写合并算法时使用的基本原则是:
- 如果可以在不使用冲突标记的情况下进行合并,请这样做。
- 如果可以使用冲突标记进行合并,请这样做。
- 如果无法合并,则最近签入的获胜。
值得注意的是,TWiki 有一个与 Stack Overflow 类似的功能,可以在一定的时间限制内折叠同一用户的后续修订,这在与合并一起发生时会导致错误。
- 用户A编辑主题
- 用户 A 保存了版本 N
- 用户 B 编辑主题,获取版本 N
- 用户 A 再次编辑主题,获取版本 N
- 用户A保存更改;save 看到更改是在 ReplceIfEditiedWithin 内吗?窗口,因此不会增加转速
- 用户 B 保存,代码发现光盘上的版本号自开始编辑以来没有更改,因此没有检测到合并的需要。
另外值得注意的是,TWiki 会警告第二个用户该主题正在编辑:
所以我发明了“租赁”的概念。编辑主题时,会对该主题进行固定时间段(默认 1 小时)的租用。如果其他人尝试编辑,他们会被告知该主题已经有租约,但这并不能阻止他们进行编辑。它不是一把锁,它只是一种向他们提供建议的方式。合并仍然是主要的解决机制;该租赁纯粹是咨询性的。如果用户 - 或插件 - 选择退出某个主题,因为有人租用了该主题,那么,这取决于插件。
TWiki.cfg中的描述性注释如下:
Run Code Online (Sandbox Code Playgroud)# 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.
请注意,租赁术语仅适用于开发商,不适用于最终用户。
| 归档时间: |
|
| 查看次数: |
917 次 |
| 最近记录: |