如果多人试图同时运行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的变更。