下一个: , 上一个: Informing others, 上层: Multiple developers


10.5 多人同时运行CVS

如果多个开发者试图同时运行 cvs,其中一个人会得到下面消息:

     [11:43:23] waiting for bach's lock in /usr/local/cvsroot/foo

cvs 会每 30 秒尝试一次,然后或者完成操作,或者继续显示上面的信息。 如果锁定时间看起来不正常,询问一下上面信息里显示的加锁的人是否他正在执行命令。 如果他们不在运行 CVS 命令,查看仓库里面在消息中提到的目录并删除它们所属以 #cvs.rfl#cvs.wfl#cvs.lock 开始的文件。

注意,这里的 lock 只是用来保护 cvs 的内部数据结构,跟 rcs 里面的 lock 没有任何关系—rcs 里面的是用来保留检出的(参阅 Multiple developers)。

除非有人加了锁来防止别人读或写,仓库可以在同一时间被多人读取。

或许有人希望能有这样的仓库:

一个人用一个命令提交的所有修改,在另外一个人执行更新命令时要么得到全部的变更,要么一个都没有。

但是 cvs没有 这样的性能。 例如,给出下列文件

     a/one.c
     a/two.c
     b/three.c
     b/four.c

如有人运行

     cvs ci a/two.c b/three.c

并且另一个人同时运行 cvs update 命令,运行 update 的人可能只得到 b/three.c 里面的变更而没有得到 a/two.c 的变更。