A.2. CVS 树的组织

作者: Marc G. Fournier 写于 1998-11-05。

命令 cvs checkout 有一个标志,-r, 可以让你检查一个模块的某一修订版。举例来说,这个标志, 使我们可以很容易地在未来的任何时间检索构成模块‘tc’的版本 1.0 的源代码∶

$ cvs checkout -r REL6_4 tc
   

这一点很有用,例如,如果某人说那个版本里面有一个臭虫, 但你不能在目前的工作拷贝里面找出那个臭虫。

小技巧: 你还可以用 -D 选项检查任意一天的模块的源码。

当你给多于一个文件打上相同的标记时, 你可以把标记想象成"一个在由文件名与修订版本号组成的矩阵中蜿蜒的折线"。 例如我们有 5 个文件,版本是下面的东西:

             file1   file2   file3   file4   file5
     
             1.1     1.1     1.1     1.1  /--1.1*      <-*-  TAG
             1.2*-   1.2     1.2    -1.2*-
             1.3  \- 1.3*-   1.3   / 1.3
             1.4          \  1.4  /  1.4
                           \-1.5*-   1.5
                             1.6
   

那么标记 "TAG" 将引用 file1-1.2,file2-1.3,等。

注意: 要创建一个发布的分支,还要在命令行上加一个 -b 选项,这是一样的事情。

因此,要创建 v6.4 版本,我按照下面的方式做:

$ cd pgsql
$ cvs tag -b REL6_4
   

这样就会为 RELEASE 树创建标记和分支。

现在,对那些有 CVS 访问(权限)的人,就太简单了。 首先,创建两个子目录,RELEASE 和 CURRENT,这样你不会混淆这两个。然后:

cd RELEASE
cvs checkout -P -r REL6_4 pgsql
cd ../CURRENT
cvs checkout -P pgsql
   

这样将产生两个目录树,RELEASE/pgsqlCURRENT/pgsql。从这时起, CVS 将跟踪某个位置分支在哪个目录树里面,并且允许两个树的独立更新。

如果你CURRENT 源码树上干活,你只需要象我们开始标记修补版分支以前那样做事情就行了。

在你完成一个分支的初始检出后

$ cvs checkout -r REL6_4
   

任何你在那个目录结构里面做的事情都局限与那个分支。 如果你对那个目录结构打了个补丁,然后在该目录里面做一次:

cvs commit
   

该补丁就应用到该分支并且 应用到该分支。