下一个: , 上一个: The connection method, 上层: Remote repositories


2.9.3 通过 rsh 连接

cvs 使用 `rsh' 协议执行这些操作,因此远程用户主机需要建立 .rhosts 来控制本地用户的访问。 注意,cvs 为此目的使用的程序可以用 --with-rsh 标志进行配置来指定。

例如,假设你是本地机上 `toe.example.com' 上的用户 `mozart',服务器是 `faun.example.org'。 首先,在服务器上 `bach' 主目录下的 .rhosts 的文件中加入下面的内容:

     toe.example.com  mozart

再用以下命令从本地机测试 `rsh'

     rsh -l bach faun.example.org 'echo $PATH'

接着应该确保 rsh 可以找到服务器。 作到确保,上面例子中 rsh 打印的路径应包括服务器上 cvs 程序所在的目录。 你需要在 .bashrc.cshrc 中设置路径而不是在 .login 或者 .profile 中。 同时,你需要在客户机上设置环境变量 CVS_SERVER 指向你希望访问的服务器, 例如:/usr/local/bin/cvs-1.6。对于 extfork 方式,你可以在 CVSROOT 中指定 CVS_SERVER 作为选项,这样你可以为不同的根使用不同的服务器。 参阅 Remote repositories 了解更多信息。

不需要编辑 inetd.conf 或者启动一个 cvs 守护进程。

有两种方法可以在 rsh 中使用 CVSROOT:server: 指定一个内部 rsh 客户,这种方法仅仅被某些 cvs 端口支持。 :ext: 指定一个外部的 rsh 程序。 按照默认,这是 rsh(除非使用 --with-rsh 标志去配置),但是你可以通过设置 CVS_RSH 环境变量用别的程序来访问远程服务器(例如,在 HP-UX 9 上的 remsh,因为在 HP-UX 9 上 rsh 有一些不同)。 这个程序必须是一个可以在客户机和服务器之间来回传送数据而并不修改数据的程序,比如,Windows NT 的 rsh 就不适合作为这样的程序,因为它默认地是在 CRLF 和 LF 之间传送数据的。 OS/2 的 cvs 通过 `-b' 给 rsh 来实现这种传递,但是由于这会对标准 rsh 程序以外的程序引起潜在的问题,这种方法在未来可望被改变。 如果你设置 CVS_RSHSSH 或者使用其它替代程序,本节中其余部分关于 .rhosts 的例子可能会不适用;建议参考替代程序的文档。

你可以选择在 CVSROOT 中指定 CVS_RSH 选项,这样可以让你为不同的根使用不同的值。 例如,在 ext 方式下允许一些根使用 CVS_RSH=remsh,其他的使用 CVS_RSH=ssh。 参阅 Remote repositories 了解更多信息。

继续我们的例子,假如你希望访问服务器 faun.example.org 上的仓库 /usr/local/cvsroot/ 中的模块 foo,你可以使用以下命令:

     cvs -d :ext:bach@faun.example.org:/usr/local/cvsroot checkout foo

(如果用户在本地机和远程主机上的用户名相同,bach@ 可以被忽略。)