下一个: Password authenticated, 上一个: The connection method, 上层: Remote repositories
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。对于 ext 和 fork 方式,你可以在
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_RSH
为 SSH 或者使用其它替代程序,本节中其余部分关于 .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@ 可以被忽略。)