cvs 使用规范

cvs 使用规范

命令

CVSROOT

环境变量CVSROOT决定了CVS的基本配置,包括验证方式,用户名,cvs服务器ip,cvs服务器商品以及仓库名称。

  • pserver: 目前的cvs服务器的验证方式是使用pserver密码验证。
  • username: 需要预先获得用户名,不同仓库都需要用户名。
  • cooling.ape-tech.com: 目前cvs服务器域名。
  • 2401: cvs服务器端口名。
  • ImRoBot5: cvs仓库名,上一版位于ImRoBot4。
    $ export CVSROOT=:pserver:username@cooling.ape-tech.com:2401/ImRoBot5
    $ cvs login
    password: 
    

import

上传项目。需要注意的是,import一个项目后,用户还需要把项目checkout下来,才可以对其进行修改。

$ mv project project.backup //项目名称不一定要和当前目录同名,之所以取名为project.backup,是因为import后,该目录就没有用处了。如果希望修改文件,需要checkout该项目到另一目录后,才能做。
$ cd project.backup //先进入需要import的项目目录。
$ cvs import project r1 ape //导入,项目名不需要与当前目录同名,import成功后,这个目录就没有用处了,如果checkout后有问题,再利用这个文件夹中正确的文件做为参考。
$ cd .. // 返回上级目录,准备checkout项目。
$ mkdir project // 建立项目根目录。
$ cd project 
$ cvs checkout -d project-trunk project // checkout项目主线,主线名称

checkout

取项目,简称co。一个项目只在第一次取代码的时候进行此操作,之后更新代码使用update。

// 把project中打上project-r1标签的版本取到本地,目录名为project-r1。
$ cvs co -d project-r1 project-r1 head project 
// 把project的主线取到本地,目录名为project-trunk。   
$ cvs co -d project-trunk project

 cvs co -r egg2-0-8 -d egg2-0-8 egg2

update

更新项目,简称up。

// 进入项目目录。   
$ cd project-trunk
// 更新代码。-d参数将新建出仓库中存在的目录。否则cvs是不会主去新建目录的。
$ cvs up -d
// 取得特定版本的文件。   
$ cvs up -r project-r1 myfile.c
// 清除当前版本所属的标签。
$ cvs up -A myfile.c

cvs会用一个字母表示当前目录下文件的状态。

? target  //?表示本地有,服务端没有。如果是不需要上传的文件,这是正常状态。
? src/Makefile
cvs update: Updating .
cvs update: Updating examples
cvs update: Updating examples/myproject
cvs update: Updating examples/myproject/src
cvs update: Updating src
M src/RD-cvs-convention.h // M表示本地文件已经修改过,同服务器上不一致,如果确认修改无误后,应当及时提交。
U src/RD-code-convention.h // 本地没有这个文件,但从服务器下载完成。
C src/RD-maketool-convention.h // C表示本地文件与服务器文件之间有冲突,通常这种情况发生在,两个以上的人对一个文件的同一版本进行了修改,第一个人上传没有问题,但第二个人上传即会出现该问题。
P src/RD-xxx.h //

add

增加文件或目录。add后还需要执行commit操作,文件才会出现到服务器上。

cvs add myfile.c // 普通文件上传
cvs add -kb summary.pdf // 增加二进制文件,通过word,pdf,图片都应以这种方式上传。

commit

提交修改内容。

   cvs ci myfile.c

diff

比较本地版本与服务器版本的差别。diff结果可以参见cvs手册,但基本可以理解。

   cvs diff myfile.c

注意事项

何类文件应当上传。

cvs上只应保存代码,数据文件,配置文件,xml文档,文档需要的图片。
任何可执行程序都不应上传,word文档最好能写成docbook或doxygen的格式,便于比较。
一个完整的项目import前需要通过make clean删除编译结果; make distclean删除configure生成的Makefile; 删除autom4e目录,其中的宏并不是必须的,但这些宏非常大,影响cvs性能。 为了确保import无误,导入者需要将项目重新取下,检查是否有问题,并有责任上传缺失或错误的文件。

需要上传的项目文件如下:

aclocal.m4  ChangeLog     config.sub  configure.ac  CVS      INSTALL     ltmain.sh    Makefile.in  NEWS    src
AUTHORS     config.guess  configure   COPYING       depcomp  install-sh  Makefile.am  missing      README

如何删除目录

cvs没有删除目录的命令,只有删除文件与空目录的命令。因此删除目录只能通过cvs rm结合find命令实现删文件,再结合cvs up -P删除空目录来实现。

自己总结 先在本地删除文件 然后cvs rm   , cvs ci
$ find . -type f | xargs rm; cvs rm
$ cvs ci
$ cvs up -P

如何打tag

先通过cvs up确保代码是最新的,然后打标签。

$ cvs up   
$ cvs tag -R tag-name   

避免与解决冲突

冲突是所有版本控制工具不可避免的问题,要解决冲突是一件很麻烦的事情,因此最好的办法是尽量避免冲突的产生。要避免冲突,需要保持一个好的习惯,就是经常update代码,及时commit。 冲突一旦出现后,要解决冲突。可以打开发生冲突的文件。文件内容可能如下:

   <<<<<<<<<<
   printf("hello1\n");
   =================
   printf("hello2\n");
   >>>>>>>>>>

冲突由两部分组成,<<<<<<<与=======之间,是服务器的内容,======与>>& gt;>>>>>是本地文件的内容。解决冲突,就是要分析,到底应该取舍哪一段代码。如果取舍本地代码,则更新后的文件内 容应该如下:

   printf("hello2\n");

分支

分支名规范如下,project-0-number,number从1开始增长。如spider-0-1。
为了容纳多个分支,本地目录需要有一个项目目录project,在该目录下,每个分支都以一个独立的子目录的方式存在。如主线名称为project-trunk,0-1版本名为project-0-1。

// 为当前版本建立分支,分支名为rel-1-0-patches   
$ cvs tag -b rel-1-0-patches
// 取分支
$ cd spider
// 取spider中spider-0-1-patches分支到要地目录spider-0-1-patches目录
$ cvs co -r spider-0-1-patches -d spider-0-1-patches spider
posted @ 2011-06-02 18:08  wangkangluo1  阅读(2747)  评论(0编辑  收藏  举报