Next: , Previous: Server requirements, Up: Remote repositories



2.9.2 Connecting with rsh

cvs uses the rsh protocol to perform these operations, so the remote user host needs to have a .rhosts file which grants access to the local user.

For example, suppose you are the user mozart on the local machine toe.example.com, and the server machine is faun.example.org. On faun, put the following line into the file .rhosts in bach's home directory:

     toe.example.com  mozart

Then test that rsh is working with

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

Next you have to make sure that rsh will be able to find the server. Make sure that the path which rsh printed in the above example includes the directory containing a program named cvs which is the server. You need to set the path in .bashrc, .cshrc, etc., not .login or .profile. Alternately, you can set the environment variable CVS_SERVER on the client machine to the filename of the server you want to use, for example /usr/local/bin/cvs-1.6.

There is no need to edit inetd.conf or start a cvs server daemon.

There are two access methods that you use in CVSROOT for rsh. :server: specifies an internal rsh client, which is supported only by some cvs ports. :ext: specifies an external rsh program. By default this is rsh but you may set the CVS_RSH environment variable to invoke another program which can access the remote server (for example, remsh on HP-UX 9 because rsh is something different). It must be a program which can transmit data to and from the server without modifying it; for example the Windows NT rsh is not suitable since it by default translates between CRLF and LF. The OS/2 cvs port has a hack to pass -b to rsh to get around this, but since this could potentially cause problems for programs other than the standard rsh, it may change in the future. If you set CVS_RSH to SSH or some other rsh replacement, the instructions in the rest of this section concerning .rhosts and so on are likely to be inapplicable; consult the documentation for your rsh replacement.

Continuing our example, supposing you want to access the module foo in the repository /usr/local/cvsroot/, on machine faun.example.org, you are ready to go:

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

(The bach@ can be omitted if the username is the same on both the local and remote hosts.)