1. 锁定并发编辑
如果两个人试图同时编辑同一个维基网页,就会出现冲突。一种简单的处理方法: 当编辑者试图编辑一个正在被其他人编辑的网页时,向其显示冲突警告。
Moin的编辑锁定系统就具有这个功能。锁定包括三个级别:warn,lock和None(关闭)。
如果设置为warn级别,那么有人试图编辑正在被编辑的网页时,他们会看到一条警告信息,要求他们等到当前编辑完成之后再继续。
Moin也可以设置成在编辑过程中lock(锁定)页面。如果有人试图编辑正在被编辑的网页,他们就会看到一条信息,说明该网页已经被锁定,直到当前编辑者完成之后,他才可以编辑。
复杂之处在于: 编辑工作可能有开始却没有结束。比如:
- 有人点击编辑链接,然后没有取消编辑工作,就点击某个链接离开了该页面。
- 没有取消编辑就关闭了浏览器窗口。
- 点击了后退按钮。
- 有人开始编辑网页,然后忘记了,结果一直保持编辑状态。
这可能导致网页处于永远警告或者永远锁定状态。因此,warn和lock都有一个timeout(超时)功能。在指定的时间之后,该功能就超时终止了。注意,当你预览时,计时器会重新计时。预览操作表明你仍然在编辑网页,计时器会重新启动。如果你离开或者退出这个网页的时间超过预设值,那么编辑锁定就会失效,其他人就可以自由编辑这个网页了。
1.1. 配置
edit_locking 变量控制着编辑锁定系统的行为。它可以设定为下列值:
None: 即没有编辑锁定。关闭编辑锁定功能,同时编辑网页时不会有警告或者锁定发生。
"warn <timeout>": 同时编辑网页时,Moin会警告编辑者;而编辑工作在指定时间后会收到警告。比如 "warn 10" 表示编辑开始10分钟后Moin向编辑者发出警告。
"lock <timeout>": 在编辑开始后,Moin会在指定的时间内锁定网页。比如 "lock 5" 表示锁定网页5分钟。
1.2. 取消编辑
根据上述关于超时功能的描述,如果打开了编辑锁定功能,我们建议您取消编辑时,总是使用取消按钮来完成!
2. 例子
张三JohnMiller 和 李四 JaneDoe 之间的交互
- no locking (None)
- 张三开始编辑页面,李四这时也想编辑同一个页面。李四不知道其他人正在编辑,于是他们都在编辑这个页面然后保存了。不管谁先开始,也不管谁编辑的内容最多,只有首先保存的那个人才能保存所有的改动,而另一个倒霉蛋只能试着看能否合并他们俩的改动,也可能他完全丢失了自己的改动。
- edit warnings (warn)
- 张三开始编辑页面,李四这时也想编辑同一个页面。当李四点击编辑时,他会看到一个警告信息,告诉他有其他人正在编辑。如果他有礼貌的话,就会离开这个页面,但他仍然可以在张三之前保存页面,而张三可能会丢失他所做的改动。
- edit locking (lock)
- 张三开始编辑页面,李四这时也想编辑同一个页面。当李四点击编辑时,他会看到一个警告信息,告诉他有其他人正在编辑,而页面已经被锁定了。李四应该离开这个页面或者他不得不等待到该页面可以使用为止。
此页的英文版本 HelpOnEditLocks