技术开发 频道

CVS:并发版本管理系统

    ② Checkout 创建私有工作目录/Export 

    换一个空目录,运行 cvs checkout modules_name 即可:

    [hahalee@builder]$ cvs checkout hftpd# hftpd是我们的module name

    cvs checkout: Updating hftpd

    U hftpd/AUTHORS

    U hftpd/COPYING

    [blah blah blah] # 省略许多
   
    [hahalee@builder t]$ ls -l

    总共 0

    drwxrwxr-x 5 hahalee hahalee 1253 Apr 7 20:08 hftpd

    [hahalee@builder t]$ find ./ -type d

    从最后一条命令的输出可看到,checkout的工作目录里多了CVS目录。里面记载了CVS相关的信息,可以方便后续的cvs操作。如果纯粹是为了拷贝出最新的source tree,可以用export,此时不会建立CVS目录。

    ③ Update 更新

    当你完成某一部分代码的时候,先不忙提交,可以把别人可能做了的其他修改update过来然后统一编译调试无误后再提交,这是team work的准则。在checkout出来的工作目录下(不管什么子目录),直接cvsup update 就可以了,当然你要先把CVSROOT环境变量设置好。

    ④ Commit 提交

    很简单,cvs commit。但你必须要在checkout出来的工作目录里提交才行:

    [hahalee@builder]$ cvs commit

    cvs commit: Examining .

    cvs commit: Examining docs

    cvs commit: Examining docs/man

    cvs commit: Examining docs/rfcs
   
    cvs commit: Examining tools

    Checking in AUTHORS;

    /home/hahalee/CVS/hftpd/AUTHORS,v <-- AUTHORS

    new revision: 0.6; previous revision: 0.5

    done

    关于并发提交冲突:任何用户可以随意checkout他们自己的工作拷贝,commit也是不受限制的。这样,当用户a和b分别checkout了1.2版的c.c,然后各自对c.c做了修改,a提交了他的修改,然后,当b提交的时候,冲突就产生了。

    这时候,cvs会做以下动作:

    告诉用户b,对c.c的提交发生冲突
    对用户b当前的c.c做备份文件.#c.c.1.2
    试图合并a和b的修改,生成新的c.c
    然后,用户b应当修改c.c,去掉/合并冲突的行,并以版本1.4提交。

    ⑤ Diff

    可以用类似rcsdiff的方法用cvs生成patch,命令行语法也类似

    [hahalee@builder]$ cvs diff -u -r0.5 AUTHORS

    Index: AUTHORS

    ===================================================================

    RCS file: /home/hahalee/CVS/hftpd/AUTHORS,v

    retrieving revision 0.5
   
    retrieving revision 0.6

    diff -u -r0.5 -r0.6

    --- AUTHORS 2000/04/07 10:46:02 0.5

    +++ AUTHORS 2000/04/07 14:05:57 0.6
   
    @@ -1,3 +1,4 @@

    +ah! let me in!

    So then, who can't spell

    Develloppopotamus?

    Quite a lot of us.

    还有一个rdiff,用来生成两个不同的release 之间的patch。

    ⑥ 其他操作

    cvs 的其他操作还包括有:

    admin 管理功能

    tag 对某一版本做符号标记
   
    release 取消checkout,删除工作目录(release在这里是“释放”的意思)

    add,remove 往repository里添加/删除文件

    history 查看repository操作历史记录

    ⑦ CVS 的多平台特性以及C/S扩展

    cvs是多平台的,开发可以在多种平台比如,可以把linux上的CVS Repository通过samba export出来在Windows平台上做开发。现在很多软件包里包含有*NIX/Windows/MacOS等多平台支持代码,cvs的跨平台特性可提供最好的多平台开发支持。

    不过,cvs的操作是直接基于文件系统的,在需要大量远程协作的场合问题很多,远程的NFS mount效率太差,也会有安全问题。新版本的cvs自身内建了Client/Server支持,也可以利用Unix上传统的远程交互手段来通讯。

    1,通过rsh(也可用ssh替换)

    2,使用cvs自带的C/S用户认证:pserver(缺省端口2401)

    3,使用kerberos的gserver、kserver

0
相关文章