技术开发 频道

CVS:并发版本管理系统

【IT168 技术文章】

    CVS,顾名思义,是个可以用在小组协作环境下的源码版本管理系统。同类的软件有AT&T的SCCS(Source Code Control System),还有PVCS等。在OpenSource项目里CVS用得最为广泛, Linux kernel不使用CVS来维护,下面我们将会参考FreeBSD的源码管理来做示例。CVS是个相当复杂的系统,FreeBSD甚至设有专门的“CVS管理员”(CVS “Maester”)来全面负责项目的CVS repository维护。

    下面介绍与CVS相关的若干概念和术语: 

    Repository:   “源码仓库”,CVS存放的项目源码历史档案

    CVSROOT:     该环境变量指明CVS Repository存放的目录

    Module:      模块。就是CVSROOT下的优异目录名

    Vendor Branch:  分支。在一套Repository里可以存放多个代码分支的历史

    Release Tag:   发行标记。对于每一个版本,可以用符号来做标记

    下面是一个CVS repository的版本衍生图,大致描绘了FreeBSD的版本发行情况。图中的RELENG_3和RELENG_4表示“Release Engine”,也就是Vendor Branch,每个Branch分头发展,等某个Branch的开发到了一定的质量水准,就做个Release Tag。比如最近的4.0-RELEASE的Release Tag是REL_4_0。

    这些不同的Branch都存放在同一个Repository Tree里。

    CVS是个很复杂的系统,可以参考下面两个URL获得进一步的信息:

    http://www.cyclic.com

    http://www.loria.fr/~molli/cvs-index.html

    (在cvs软件包里含有详细的文档,应当查阅info版本。几个ps文件都太老了)

    下面介绍CVS的基本用法。

    ① Import 导入/创建CVS Repository Tree

    首先建一个目录作为你的CVSROOT,然后用cvs init命令对其初始化(建立一系列log,config文件)。然后到工作目录下使用cvs import命令:

    [hahalee@builder]$ mkdir /home/hahalee/CVS

    [hahalee@builder]$ export CVSROOT=/home/hahalee/CVS

    [hahalee@builder]$ cvs init

    [hahalee@builder]$ cvs import _b 0.5.0 hftpd RELENG_0 REL_0

    N hftpd/tar.h

    N hftpd/auth.h

    [blah...blah...blah...]

    N hftpd/docs/rfcs/rfc0959.txt

    N hftpd/docs/rfcs/rfc2428.txt

    No conflicts created by this import

    上述操作在$CVSROOT下生成hftpd目录,可以看到里面都是后缀为“,v”的文件,这就是import进来的Repository。RELENG_0是vendor-tag,REL_0是release-tag。vendor-tag就是vendor branch tag,可以理解为”code name”。

0
相关文章