Home -- Michael's Blog :: Just Do IT -- Manuals

19.3. 同步你的源码

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

警告虽然只更新源码树中的部分是可能的,唯一被支持的更新过程是更新整个树、并且重编译用户区(如:在用户空间运行的所有程序,像/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进行重建,仅仅删除坏的数据并再同步。

Michael's Blog :: Just Do IT -- manuals