下一个: , 上一个: Tracking sources, 上层: Top


14 构建系统如何与 CVS 交互操作

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

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

还有一个常见的需要是纪录特定构建中源代码的版本。 这种功能称为 bill of materials 或类似叫法。 在 cvs 中最好的解决方法是使用 tag 命令来纪录给定构建的版本(参阅 Tags)。

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

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