在wiki风格的网站上,我还能做些什么来防止或缓解写 - 写冲突,同时仍允许网站快速运行并保持网站易于使用?
我预见到的问题是:
用户A开始编辑文件
用户B开始编辑文件
用户A完成编辑文件
用户B完成编辑文件,意外覆盖用户A的所有编辑
以下是我提出的一些方法:
有一些退房/登记/锁定系统(虽然我不知道如何防止人们保持文件签出"太长",我不希望用户因不被允许而感到沮丧进行编辑)
有某种差异系统,显示当用户提交更改并允许某种合并时所做的其他更改(但我担心这很难创建并会使网站"太难"使用)
用户在进行更改时会通知并发编辑(某种AJAX?)
还有其他方法吗?任何实现这一点的网站的例子?
记住上次更改的版本号(或ID).然后在写入之前阅读该条目并比较该版本是否仍然相同.
如果发生冲突,请通知正在尝试编写同时更改的条目的用户.用差异支持他.
大多数维基都是这样做的.链接到MediaWiki,Usemod,等等.
三向合并:首先要指出的是,大多数并发编辑,特别是在较长文档上,都是针对文本的不同部分.因此,通过注意用户A和B获得的修订,我们可以进行三向合并,如Guiffy Software的Bill Ritcher所详述.三向合并可以识别从原始文件进行编辑的位置,除非它们发生冲突,否则它可以将两个编辑内容静默地合并到一篇新文章中.理想情况下,此时执行合并并向用户B显示新文档,以便她可以选择进一步修改它.
碰撞解决 方案:当两个编辑器编辑同一部分时,这将为您提供方案.在这种情况下,合并其他所有内容并将三个版本的文本提供给用户B - 也就是说,包括原始文本 - 用户A的文本框中的版本或用户B的版本.该选择取决于您是否认为默认值应接受最新(用户只需单击"保存"以保留其版本)或强制编辑器进行两次编辑以获取其更改(他们必须将其更改重新应用于编辑器A的版本的部分).
使用这样的三向合并可以避免锁定,这很难在网络上很好地处理(你让他们有多长时间锁定?),以及加重'你可能想再看一次'的情况,这只是适用于论坛风格的回复.它还保留了网络的后响应风格.
如果你想稍微改进它,可以在编辑它时动态3路将用户A的版本合并到用户B的版本中,并通知它们.现在这将令人印象深刻.