zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    OA权限管理的实现(下)
    Eclipse及其插件介绍和下载(转)
    [转载]在Redhat Linux AS 4下实现软件RAID
    RAID磁盘阵列术语详解(转)
    [转载]关于"编译器失败,错误代码为128。"的解决方案
    Android的SurfaceView使用
    剖析 SurfaceView Callback以及SurfaceHolder
    android drawable 应用
    Android layout xml总结
    listView控件,adapter,以及其他控件的组合
  • 原文地址:https://www.cnblogs.com/wangkangluo1/p/2068787.html
Copyright © 2011-2022 走看看