章 2. 源码库

目录
告诉CVS源码库放在哪里
数据是如何存储在源码库中的
数据在工作目录是怎样存储的
管理文件-administrative files
多源码库
创建源码库
备份源码库
移动一个源码库
远程源码库
只读存储仓的访问
服务器的临时目录

CVS源码库(repository)存储了用于版本控制的所有文件和目录的备份。

通常,你可以直接从源码库里取得你所需要的文件。你也可以使用CVS命令从源码库取得你自己的文件的备份放到工作目录下,并在工作目录(working directory)下的备份上修改。当完成了一系列修改后,你把它们提交(commit)到源码库。源码库将保存你对文件的所有修改情况:包括你做了什么样的修改和什么时候进行的修改。以及诸如此类的信息。注意:源码库不是工作目录的子目录,反之亦然。它们应该在各自独立的位置。

CVS有很多方法访问源码库。可以是本地计算机,也可以是隔壁房间里的或是世界另一端的计算机。为了区别访问源码库的方法,源码库的名称应该出现在访问方法(access method)的后面。例如:访问方法::local:是访一个源码库目录;:local:/usr/local/cvsroot 就是访问运行在/usr/local/cvsroot下的源码库,要获得更多关于访问方法, 请参考[远程源码库]。

如果省略了访问方法,并且源码库以/打头,那么:local:就是默认的方法。如果仅仅没有以/打头,那么:ext:或者:server:就是默认的方法。例如,有一个源码库在/usr/local/cvsroot下,可以用/usr/local/cvsroot替代:local:/usr/local/cvsroot。但如果本地源码库 (例如在Windows NT下)在c:\src\cvsroot,那就要指定访问方法:local:c:/src/cvsroot

源码库分成两个部分。$CVSROOT/CVSROOT包含关于CVS的管理文件。其它目录才是真正包含用户定义的模块。

告诉CVS源码库放在哪里

有几种方法告诉CVS源码库的位置。一种方法是通过命令行显式命名源码库,具体方法是用-d(表示"目录")选项:

cvs -d /usr/local/cvsroot checkout yoyodyne/tc

你也可以给环境变量$CVSROOT设置绝对路径来代表源码库的位置。在本例中$CVSROOT被设置成/usr/local/cvsroot。对于cshtcsh用户,在.cshrc.tcshrc文件中加入下面语句即可设置$CVSROOT的值:

setenv CVSROOT /usr/local/cvsroot

shbash用户则应在他们的.profile或者.bashrc加入下面语句:

CVSROOT=/usr/local/cvsroot
export CVSROOT

-d选项将忽略环境变量$CVSROOT。一旦你从源码库里检出了一份工作拷贝,那么它将记住源码库的位置(信息被记录在工作拷贝的CVS/Root文件里)。

-d选项和CVS/Root文件都会使环境变量$CVSROOT不起作用。如果-d选项和CVS/Root文件指定的源码库位置不同的话,-d选项起作用。当然,最好还是让它们一致。