A.4. 匿名 CVS

A.4.1. 概述

匿名 CVS(或人们常说的 anoncvs)是由和 FreeBSD 附带的 CVS 实用工具提供的用于和远程的 CVS 代码库同步的一种特性。 尤其是, 它允许 FreeBSD 用户不需要特殊的权限对任何一台 FreeBSD 项目的官方 anoncvs 服务器执行只读的 CVS 操作。 要使用它,简单的设置 CVSROOT 环境变量指向适当的 anoncvs 服务器, 输入 cvs login 命令 并提供广为人知的密码anoncvs,然后使用 cvs(1) 命令像访问任何本地仓库一样来访问它。

注意:

cvs login 命令把用来登录 CVS 服务器的密码储存在您的 HOME 目录中一个叫 .cvspass 的文件里。 如果这个文件不存在, 第一次使用 cvs login 的时候可能会出错。 请创建一个空的 .cvspass 文件,然后试试重新登录。

也可以这么说 CVSupanoncvs 服务本质上提供了同样的功能,但是有各种各样 不同的场合可以影响用户对同步方式的选择。简单来说, CVSup 在网络资源利用方面 更加有效,而且是到目前为止在两者之中技术上更成熟的 除了成本方面。要使用 CVSup,在下载任何东西之前 必须首先安装配置特定的客户端, 而且只能用于下载相当大块的 CVSup 称作 collections

相比之下,anoncvs 可以通过 CVS 模块名来从单个文件里检出任何东西并赋给特定的程序 (比如 ls 或者 grep)。 当然,anoncvs 也只适用于对 CVS 仓库的只读操作,所以如果您是想用和 FreeBSD 项目共享的仓库提供本地开发的话, CVSup 几乎是您唯一的选择。

A.4.2. 使用匿名 CVS

配置 cvs(1) 使用匿名 CVS 仓库可以简单的设定 CVSROOT 环境变量指向 FreeBSD 项目的 anoncvs 服务器之一。 到此书写作为止, 下面的服务器都是可用的:

  • 法国: :pserver:anoncvs@anoncvs.fr.FreeBSD.org:/home/ncvs (使用 pserver 模式时, 用 cvs login 配合口令 anoncvs 来登录。 如果使用的是 ssh, 则不需要口令。)

  • 台湾地区: :pserver:anoncvs@anoncvs.tw.FreeBSD.org:/home/ncvs (使用 pserver 模式时, 用 cvs login 配合口令 anoncvs 来登录。 如果使用的是 ssh, 则不需要口令。)

    SSH2 HostKey: 1024 02:ed:1b:17:d6:97:2b:58:5e:5c:e2:da:3b:89:88:26 /etc/ssh/ssh_host_rsa_key.pubSSH2 HostKey: 1024 e8:3b:29:7b:ca:9f:ac:e9:45:cb:c8:17:ae:9b:eb:55 /etc/ssh/ssh_host_dsa_key.pub
  • 美国: anoncvs@anoncvs1.FreeBSD.org:/home/ncvs (使用 ssh 时, 请使用协议版本 2, 不需要口令。)

    SSH2 HostKey: 2048 53:1f:15:a3:72:5c:43:f6:44:0e:6a:e9:bb:f8:01:62 /etc/ssh/ssh_host_dsa_key.pub

因为 CVS 实际上允许 检出 曾经存在的 (或者,某种情况下将会存在) FreeBSD 源代码的任意版本, 您需要熟悉 cvs(1) 的版本 (-r) 参数, 以及在 FreeBSD 代码库中可用的值。

有两种标签,修订标签和分支标签。 修订标签特指一个特定的修订版本。含义始终是不变的。 分支标签,另一方面, 指代给定时间给定开发分支的最新修订, 因为分支标签不涉及特定的修订版本, 它明天所代表的含义就可能和今天的不同。

第 A.7 节 “CVS 标签” 包括了用户可能感兴趣的 修订标签。 请注意, 这些标签并不适用于 Ports Collection, 因为它并不包含多个开发分支。

当您指定一个分支标签,您通常会得到那个开发分支的文件的最新版本。 如果您希望得到一些旧的版本,您可以用 -D date 标记制定一个日期。 察看 cvs(1) 手册页了解更多细节。

A.4.3. 示例

在这之前强烈建议您通读 cvs(1) 的手册页, 这里有一些简单的例子来展示如何使用匿名 CVS:

例 A.1. 从 -CURRENT 检出些东西 (ls(1)):
% setenv CVSROOT :pserver:anoncvs@anoncvs.tw.FreeBSD.org:/home/ncvs% cvs login>在提示符处,输入任意密码 “password”.% cvs co ls

例 A.2. 通过 SSH 检出整个 src/ 代码树:
% cvs -d anoncvs@anoncvs1.FreeBSD.org:/home/ncvs co srcThe authenticity of host 'anoncvs1.freebsd.org (216.87.78.137)' can't be established.DSA key fingerprint is 53:1f:15:a3:72:5c:43:f6:44:0e:6a:e9:bb:f8:01:62.Are you sure you want to continue connecting (yes/no)? yesWarning: Permanently added 'anoncvs1.freebsd.org' (DSA) to the list of known hosts.

例 A.3. 检出 8-STABLE 分支中的 ls(1) 版本:
% setenv CVSROOT :pserver:anoncvs@anoncvs.tw.FreeBSD.org:/home/ncvs% cvs login在提示符处,输入任意密码 “password”。% cvs co -rRELENG_8 ls

例 A.4. 创建 ls(1) 的变化列表(用标准的 diff)
% setenv CVSROOT :pserver:anoncvs@anoncvs.tw.FreeBSD.org:/home/ncvs% cvs login在提示符处,输入任意密码 “password”。% cvs rdiff -u -rRELENG_8_0_0_RELEASE -rRELENG_8_1_0_RELEASE ls

例 A.5. 找出可以使用的其它的模块名:
% setenv CVSROOT :pserver:anoncvs@anoncvs.tw.FreeBSD.org:/home/ncvs% cvs login在提示符处,输入任意密码 “password”。% cvs co modules% more modules/modules

A.4.4. 其他资源

下面附加的资源可能对学习 CVS 有帮助:

  • CVS 教程, 来自加州州立理工大学。

  • CVS 主页, CVS 开发和支持社区。

  • CVSweb 是 FreeBSD 项目的 CVS web 界面。

本文档和其它文档可从这里下载: ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

如果对于FreeBSD有问题,请先阅读 文档,如不能解决再联系 <questions@FreeBSD.org>.

关于本文档的问题请发信联系 <doc@FreeBSD.org>.