这件事一直萦绕在我的脑海里,所以我想我还是去问问吧。
wiki 如何处理对同一内容的多次编辑?
这是我所要求的一个简单的例子。假设一个页面包含以下内容:
我是一页!
现在假设有两个人去编辑该页面。每人加一句话:
第一个人:
我是一页!
我是同一页的第二句话!
第二个人:
我是一页!
我是第二句话!
想象每个人的第二句话是关于每个人想要添加的页面主题的同样相关但不同的事实。
现在,假设第一个人在第二个人之前提交更改,但第二个人甚至没有机会看到第一个人所做的更改。当第二个人最终提交时,他的更改会覆盖第一个人的更改吗?
是否有可用于此目的的差异/合并算法?
我相信维基百科使用一个相当简单的差异/合并 http://meta.wikimedia.org/wiki/Help:Edit_conflict算法,类似于大多数源代码控制软件的做法。
在您给出的示例中,它会引发合并冲突错误,因为它无法知道最终标记中哪一行应该排在第一位。第二个保存更改的人将看到一个合并错误页面,他们必须在其中选择如何解决冲突。
但请记住,维基百科处于并发用户规模的高端。对于大多数 wiki,使用非常简单的“最后保存获胜”算法可能是可以接受的,其中第二个人的编辑简单地覆盖第一个人的编辑。添加历史记录后,第一个人应该很容易发现他们的更改已被覆盖并再次将其添加回来。
我相信 Stack Overflow 使用的就是这个解决方案。 SO 有一个附加功能,如果其他人进来并在完成之前修改页面,则使用 Ajax 调用来通知编辑器。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)