19.3. 同步您的源码

有许多方式通过互联网(或电子邮件)与 FreeBSD 项目源码特定领域或所有领域保持更新,主要依赖于您的兴趣。 我们提供的主要服务是匿名 CVSCVSup,和 CTM

Warning虽然只更新源码树中的部分是可能的, 唯一被支持的更新过程是更新整个树、并且重编译用户区 (如:在用户空间运行的所有程序,像 /bin/sbin下边的)和内核源码。 只更新源码树中的部分,或只有内核,或只有用户区 (userland) 通常会出现错误。这些问题包括有编译错误、内核崩溃 (kernel panics)、数据出错。

Anonymous CVSCVSup 使用 下拉(pull) 模式更新源码。在 CVSup 方式下,用户 (或 cron 脚本) 调用 cvsup 程序,并且与某个地方的 cvsupd 服务器交互一起更新您的文件。您收到的更新文件是更新到秒的, 并且在您得到他们时,也只有那时您会需要它们。 您可以轻易的限定您的更新到您感兴趣的指定文件或目录。 服务器会根据您所有的和您想要的更新在空闲时生成。 Anonymous CVS 相比 CVSup 要简单一点, CVSup 只是 CVS(让您可以直接从远端的 CVS 仓库里下拉更改)的扩展。CVSup 完成得更有效率,但 Anonymous CVS 更易使用。

CTM,在另一方面, 不能交互的把您有的源码与主压缩包里的进行比较, 也不能把它们拉下来。实际上,在主 CTM 机器里, 可以用来识别文件里自上次运行以来发生的变化的脚本, 每天要执行好几次,任何侦测到的变化都会被压缩、 标识上序列号并进行编码以利于能过电子邮件传输 (只能是可打印的ASCII)。一旦接收到, 这些“CTM deltas”就会被传送给 ctm_rmail(1) 工具---可以自动进行解码、校验和应用这些变化到用户的复制的源码里。 这个过程比 CVSup 更为有效, 而且更少占用我们的服务器资源,因为它不仅仅采用 下拉(pull) 模式,还采用 上推(push) 模式。

当然,There are other trade-offs, of course. 如果您不经意删除了您的压缩包的部分内容, CVSup 会检测到并为您重建破坏的部分。 CTM 是不会这样做的, 如果您删除了您的源码树中的某部分(并已不能恢复), 那么您就必须从破坏处 (从最新的CVS “base delta”) 开始,使用 CTMAnonymous CVS 进行重建,仅仅删除坏的数据并再同步。