多人同时运行CVS

如果多人试图同时运行cvs,其中一个人会得到下面类似信息:

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

cvs会每30秒尝试一次,然后或者完成操作,或者继续显示上面的信息。如果锁定时间看起来不正常,询问一下上面信息里显示的加锁的人是否他正在执行命令。如果没有,查看源码库里面对应路径中的#cvs.rfl#cvs.wfl#cvs.lock文件,然后删除它们。

注意这里的lock只是用来保护cvs的内部数据结构,跟rcs里面的lock没有任何关系,rcs里面的是用来限制检出[第 10 章]。

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

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

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

但是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的变更。