MacCVS On SourceForge

This is a description of how to go about doing development on SourceForge using MacCVS.

SourceForge uses secure shell for communicating with clients. This presents some um special challenges for Macintosh development. Fortunately, there are currently two mechanisms for doing this:


Using MacSSH.

MacSSH is an open source SSH client for the Macintosh. You will need version 2.1a9 or later of MacSSH and version 3.1.11 or later of MacCVS.

Let's say you work on PROJECT as USER with PASSWORD.

  1. Launch MacSSH
  2. Choose Favorites/Edit Favorites...
  3. Click "New" to create a new group of settings for the project.
  4. Under the "General" tab, enter the following:
    1. Alias: something like "PROJECT Development"
    2. Host Name: cvs.PROJECT.sourceforge.net
    3. Port: 22
  5. Under the "Security" tab, enter the following (note the quotation marks under "Command:"):
    1. Protocol: ssh2 (Secure Shell)
    2. Username: USER
    3. Password: PASSWORD
    4. Command: -N -E"cvs -d /cvsroot/PROJECT server"
  6. Under the "SSH2" tab, enter the following:
    1. Method: CVS Port forward
    2. Port:514
  7. Click OK (to save the new settings).
  8. Click OK (to close the Favorites list).
  9. Choose Favorites/PROJECT Development
  10. Accept the host key.
  11. Now, launch MacCVS
  12. Choose CVS Admin/Preferences...
  13. Under the "General" tab, enter the following:
    1. CvsRoot: USER@127.0.0.1:/cvsroot/PROJECT
    2. Authentication: RHosts
  14. Click OK.

You should now be able to start work on SourceForge. To check out a copy of your project:

  1. In MacCVS, choose CVS Admin/Checkout module...
  2. Choose the folder to save the workspace tree in.
  3. Under the 'General" tab, enter the following:
    1. Module: PROJECT
  4. Click OK.

MacCVS should now start checking out your module.

If the MacSSH tunnel gets closed for some reason (if MacSSH is shut down or cvs accidentally closes it) just choose your configuration from the Favorites menu as in step 9 above.


Using a Linux proxy.

This method requires a Linux box, and may open you to security holes as it uses rsh, but as long as your private network is secure and you use a machine behind a firewall, this should not be a problem.

Let's say you work on PROJECT as USER with PASSWORD and you log in to the proxy machine as PROXYUSER and your file sharing setup has you as MACUSER. Here are the steps to setting this up:

  1. Choose a Linux box to use as a proxy. This should preferably not be visible to the outside world.
  2. Open a telnet or ssh session on the proxy machine from your Macintosh, logging in as PROXYUSER.
  3. Make sure ssh and cvs are installed on the proxy box:
    1. Type which cvs
    2. Type which ssh
  4. Create a key using ssh-keygen (if you don't already have one), and don't give it a password. Store it in ~/.ssh/identity (i.e. in your home directory)
  5. Upload the contents of ~/.ssh/identity.pub (the text file) to SourceForge:
    1. Copy the ~/.ssh/identity.pub from your telnet application the clipboard
    2. Go to your account page.
    3. Click on "Edit Keys" at the bottom
    4. Paste the key in, and remove any carriage returns.
    5. Click "Update"
  6. You may now have to wait several hours for your key to become active.
  7. Create a file ~/.ssh/config and replace PROJECT and USER strings with your values. This basically creates an ssh alias called PROJECT that uses the blowfish cipher and talks to the correct SourceForge server.
  8. Create a script called "cvsproxy" on the remote box in /usr/bin and make it world executable (chmod +x cvsproxy). This proxy takes its arguments and passes the first one to ssh as the host alias and the rest to cvs.
  9. Add your Mac's hostname and MACUSER to your ~/.rhosts file
    1. Add a line machost.example.com MACUSER
    2. You may want to use the machine's IP address if it has no name.
    3. You may wish to leave off the login to avoid problems with the File Sharing id.
    4. Make sure that your .rhosts file has the correct permissions: -rw-r--r--
  10. Turn on rsh. Under Linux, this consists of the following steps:
    1. Edit /etc/inetd.conf to include or uncomment a line looking like this:
      shell stream tcp nowait root /usr/sbin/tcpd in.rshd
    2. Restart the internet daemon. One of the following incantations should work:
      1. Go to /etc/rc.d/init.d and type: ./inet restart
      2. OR, as root, type kill -HUP inetd
  11. Set up MacCVS to connect via rsh.
    1. Launch MacCVS
    2. Choose CVS Admin/Preferences...
    3. In the "General" panel, enter the following:
      1. Authentication: "Rsh"
      2. CVSROOT:
    4. In the "Ports" panel, enter the following:
      1. Check "Check for an alternate server name"
      2. Alternate server: cvsproxy PROJECT
    5. Click OK


This tells MacCVS to call cvsproxy on the proxy machine with the arguments PROJECT and whatever other arguments would have been passed to cvs. cvsproxy just turns around and executes ssh PROJECT cvs with whatever arguments would have been passed to cvs. rsh handles the flow of the data from there, and it all Just Works.


This page is maintained by Richard Wesley. Many thanks to Jean-Pierre Stierlin for the MacSSH fixes and directions and to Chris Nandor for the Linux proxy.