介绍一下CVS的用法?(二)

2014-11-24 00:58:25 · 作者: · 浏览: 23

这个命令会删除工作目录 cvstest/c (建议在提交了修改的模块后执行这一步) , 它比使用 rm –rf cvstest 要好。
3. 多用户开发 ————— 在多用户的情况下,如果不同用户修改的是同一个文件的不同部分,则使用下面 的命令就能进行版本合并(把检出的文件与当前的最新版本合并): $cvs update (1) 冲突解决 在有多个用户对同一个文件进行修改时,如果修改了其中的相同部分,而修改后 的内容如果有不同的话,出现冲突是不可避免的。如果在CVS 文件仓库中有一个 文件 test.c ,它的版本是 1.4, 用户A 先检出该文件进行修改,而稍后有用户 B 检出该文件进行修改,并提前提交成 1.5, 而在用户A再提交时就会出现冲突 (如果文件内容不同的话),这时CVS会提示需要手工解决。 文件仓库中的版本1.4: #include main() { int i; for(i = 0; i < 100; i++) printf(“Count: %d ”, i); } 用户B 1.5: #include main() { int i; for(i = 0; i < 10; i++) printf(“Count: %d ”, i); printf(“Over ”); } 用户A : #include main() { int i; for(i = 0; i < 50; i++) printf(“Count: %d ”, i); return; } 提交时会提示有冲突,需要手工编辑,这时运行了$cvs update 之后再编辑test .c, 会看到: #include main() { int i; <<<<<<< test.c for(i = 0; i < 50; i++) ======= for(i = 0; i < 10; i++) >>>>>>> 1.5
printf(“Count: %d “, i); <<<<<<< test.c return; ======= printf(“Over “); >>>>>>> 1.5 } (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 annotate cvstest/c/test.c 输出: 版本 修改人 修改时间 源代码 1.1 (tang 18-Jan-00): #include 1.1 (tang 18-Jan-00): #include 1.1 (tang 18-Jan-00): 1.1 (tang 18-Jan-00): main() 1.1 (tang 18-Jan-00): { 1.1 (tang 18-Jan-00): int i = 0 ; 1.1 (tang 18-Jan-00): 1.1 (tang 18-Jan-00): for(i = 0; i < 20; i++) 1.1 (tang 18-Jan-00): printf(“Count: %d “, i); 1.1 (tang 18-Jan-00): 1.3 (tang 18-Jan-00): printf(“222222 “); 1.4 (tang 18-Jan-00): printf(“333333 “); 1.1 (tang 18-Jan-00): }
使用下面的命令可以生成相对于一个指定主版本的分支版本: 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
把当前所做的修改与指定版本的文件进行合并。
主干 1.1 1.2 1.3 1.4 1.5 1.6 ↓ 分支tlb-1 1.2.2.1 1.2.2.2 1.2.2.3
如果要合并分支tlb-1上的版本: $cvs update –j 1.2.2.3 –j tlb-1 test.c 其中1.2.2.3可以通过tag命令生成一个容易记忆的标识。
如果要合并分支tlb-1到主干上1.2 : $cvs update –j tlb-1 test.c
如果要合并主干上的不同版本(注意顺序很重要,同时在指定版本之间的所有修 改将被丢弃): $cvs update –j 1.5 –j 1.2 test.c
如果在不同版本之间模块的文件有增减,则可以: $cvs update –A $cvs updata –jbranch_name
4. 在远程机器上使用CVS ———————- 通过网络使用CVS 有很多种方式,但在这里只介绍比较简单的一种:通过rsh 执 行cvs 命令。 1) 在远程机器的.rhosts中加入对本地机的访问许可: tom tang
2) 使用下面的命令检出模块ESMSTRG $cvs –d :ext:tang@esmpro:/work/cvsroot checkout SOURCE
其中, ext 指明了连接方式为 rsh, tang 指明了本地用户, esmpro 指明了远 地主机,/work/cvsroot 指明了在远地主机上的$CVSROOT路径,可以在本地设置 CVS_SERVER环境变量指明这个目录。
5. 参看帮助 —————- cvs –H command
可以参看指定命令的帮助信息。