4).多用户开发
在多用户的情况下,如果不同用户修改的是同一个文件的不同部分,则使用下面的命令能进行版本合并(把检出的文件与当前的新版本合并):
# cvs update
(1)冲突解决
在有多个用户对同一个文件进行修改时,如果修改了其中的相同部分,而修改后的内容如果有不同的话,出现冲突是不可避免的。如果在CVS 文件仓库中有一个文件 test.c ,它的版本是1.4,用户A 先检出该文件进行修改,而稍后有用户B检出该文件进行修改,并提前提交成 1.5,而在用户A再提交时会出现冲突(如果文件内容不同的话),这时CVS会提示需要手工解决。
(2)文件版本管理
cvs log [-lR][-r rev][-d date][-w login][files…]
-l 不处理子目录
-R 对子目录做同样处理
-r 指定版本号
-d 指定时间
-w 指定登录名
使用上面的命令可以参看当前模块或指定文件的所有历史版本信息。
cvs annotate [-lR][-r rev|-D date] files
-l 不处理子目录
-R 对子目录做同样处理
-r 指定版本号
使用上面的命令可以参看指定文件(检出之后)的所有修改信息。
使用下面的命令可以生成相对于一个指定主版本的分支版本:
cvs rtag –b –r rev_root rev_branch file_name
-b 指定生成一个分支版本
-r 指定该分支的主干节点版本号
rev_root 主干版本号
rev_branch 分支版本号
file_name 指定文件,使用“.”表示当前目录下所有文件
使用上面的命令可以生成一个对应版本号的分支版本,由于CVS 版本号是用数字表示的,而且在同一个模块下不同文件的版本完全可能是不同的,所以使用标识会更方便。
例:
# cvs rtag –b –r 1.2 tlb-1 SOURCE
以后要访问该分支版本,可以使用“-r” 选项
# cvs checkout –r tlb-1 SOURCE
从当前检出的版本切换到一个分支版本:
# cvs update –r tlb-1 SOURCE
使用下面的命令可以看版本信息:
cvs status [–vlR] files
-v 显示所有信息
-l 不显示子目录信息
-R 显示子目录信息
cvs update –j rev module
把当前所做的修改与指定版本的文件进行合并。
如果在不同版本之间模块的文件有增减,则可以:
# cvs update –A
# cvs updata –jbranch_name
5).在远程机器上使用CVS
通过网络使用CVS 有很多种方式,但在这里只介绍比较简单的一种:通过rsh 执行cvs 命令。
1) 在远程机器的.rhosts中加入对本地机的访问许可:
tom huang
2) 使用下面的命令检出模块
# cvs –d :ext:huang@wyhlinux:/work/cvsroot checkout SOURCE
其中,ext 指明了连接方式为 rsh,huang指明了本地用户,wyhlinux指明了远地主机,/work/cvsroot 指明了在远地主机上的$CVSROOT路径,可以在本地设置CVS_SERVER环境变量指明这个目录。