下一个: , 上层: Repository storage


2.2.1 仓库中文件存储的地方

仓库中全部目录结构完全对应于工作目录中的目录结构。 比如,假设仓库在

     /usr/local/cvsroot

下面是一个可能的目录结构(只显示目录):

     /usr
      |
      +--local
      |   |
      |   +--cvsroot
      |   |    |
      |   |    +--CVSROOT
               |      (administrative files)
               |
               +--gnu
               |   |
               |   +--diff
               |   |   (source code to gnu diff)
               |   |
               |   +--rcs
               |   |   (source code to rcs)
               |   |
               |   +--cvs
               |       (source code to cvs)
               |
               +--yoyodyne
                   |
                   +--tc
                   |    |
                   |    +--man
                   |    |
                   |    +--testing
                   |
                   +--(other Yoyodyne software)

与目录一起的是在版本控制下的每个文件的历史文件(history files)。 这些文件的名称是在对应在工作目录中的文件名称后面加上 `,v'。 下面是仓库中 yoyodyne/tc 目录的可能情况:

       $CVSROOT
         |
         +--yoyodyne
         |   |
         |   +--tc
         |   |   |
                 +--Makefile,v
                 +--backend.c,v
                 +--driver.c,v
                 +--frontend.c,v
                 +--parser.c,v
                 +--man
                 |    |
                 |    +--tc.1,v
                 |
                 +--testing
                      |
                      +--testpgm.t,v
                      +--test2.t,v

历史文件中包括有足够的信息来再创建文件的任何一个修订版,另外还记录有所有提交信息的日志,其中包括提交者的用户名。 这些历史文件就是以前的 RCS files,因为第一个以这种存储文件格式方式来进行版本控制的系统是 rcs。 关于文件格式的详细描述请看 rcs 发布的 man 中关于 rcsfile(5) 的信息,或者是 cvs 源代码中的 doc/RCSFILES 文件。 这种文件格式已经应用的十分广泛—除了 cvsrcs 之外还有很多其它的版本控制系统至少可以导入这种格式的历史文件。

cvs 中用的文件格式与标准的 rcs 文件格式有一些差别。 最大的差异在于魔术分支;关于这些的更多信息见 Magic branch numbers。 另外 cvs 中有效的标签名称是 rcs 所能接受的一个子集;关于 cvs 的规则见 Tags