章 14. build系统如何与CVS交互操作

简介中曾提到,cvs不包含将源代码build成软件的功能。本节只描述build系统与cvs之间的交互操作。

一个常见的问题,特别是对rcs熟悉的人们,是如果得到源代码的最新拷贝。答案有两方面(tow-fold)。首先,因为cvs可在目录内递归,所以不必修改Makefile(或其他配置文件)以使每个文件都最新。所以,先使用cvs -q update命令,再用make或build工具中别的命令即可。其次,在完成你的任务之前,不必去考虑得到其他人做的修改。建议的作法是更新源代码、修改、build和测试你的修改,然后提交(如果需要先更新)你的源码。通过周期性地(修改之间,如刚才的描述)更新你的源码树,你就能确定你的源代码足够新。

还有一个常见的需要是纪录build中源代码的版本。这种功能称为 bill of materials或类似叫法。在cvs中最好的解决方法是使用tag命令来纪录特别build的版本。[标签形式的版本号 在 第 4 章]

大多数简单使用cvs的方式下,每个开发人员会有一份整个源码树的拷贝用于特定的build。如果源码树比较小,或者开发人员地理位置分散,这是一种比较合适的作法。对于大的项目,应当将其分成小的可以独立编译的子系统,它们可以内部发布,这样开发人员只需检出自己工作的相应的子系统。

另一种方式是创建一种结构,开发人员对部分文件有自己的拷贝,其他文件从中心获得。在许多系统上可以使用符号链接,或者使用makeVPATH特性。一个专为此设计的build工具可以帮你处理,它就是Odin(参考ftp://ftp.cs.colorado.edu/pub/distribs/odin)。