Setting up WinCVS and MacCVS

Read/Write Access via WinCVS or MacCVS. Read/write access to the CVS repository is more complex. This requires several setup steps: getting a copy of a CVS client; getting the tools necessary to generate a cryptographic key; posting the key on sourceforge; and configuring your CVS client to download the software from sourceforge.

Get Copy of WinCVS or MacCVS

You can obtain a copy of WinCVS or MacCVS at wincvs.org. These are stand-alone GUI clients that allow you to check out or submit code to CVS repositories. This example uses MacCVS 3.3a2, though the WinCVS GUI client is very similar. Download and install a client.

Posting a Public Key

If you want read/write access you also need a cryptographic public key installed on sourceforge.net. You must first generate a public/private key pair, and then place the public key on sourceforge's servers. This eliminates the need to use a password to authenticate yourself to sourceforge's servers.

You need to have SSH (secure shell) installed on your machine to generate the key. Cygwin provides a free command line utility with this capability. Other options include PuTTY, which has a GUI interface for Windows boxes.  Linux and Mac OS X have ssh pre-installed.

If you are using Windows and have cygwin installed, and the cygwin bin directory is included in the PATH environment variable, type the following on the command line:

ssh-keygen -t dsa

The interaction looks like this:

ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in id_dsa.
Your public key has been saved in id_dsa.pub.

The id_dsa file contains your private key, which you should not divulge to anyone. The id_dsa.pub file contains the public key, which you will post on sourceforge.net. These files may be placed in unusual places on your filesystem.  Often cygwin will place them in the directory c:\cygwin\home\username\.ssh. (Note the period at the start of the ".ssh" directory name). Under Linux and OS X, the key is typically placed in your home directory in the .ssh directory.

The private key may optionally be encrypted with a passphrase, so that accessing its unencrypted form requires that you first type a password.

PuTTY has a similar key generation tool that is GUI-based. A description of the process of creating a key using PuTTY is here.

To post the public key on sourceforge, first ensure that you are added as a developer to the XMSF sourceforge project. Without this step you will not have access to the web page that allows public keys to be added. You can be added as a developer by talking to a project manager, such as Don McGregor, Don Brutzman, or Alan Hudson.

Log in to sourceforge and go to your account preferences page. If you have been added as a developer to the project you should see  a link called [Edit CF SSH Keys]. Using a text editor, copy the contents of the file id_dsa.pub to the clipboard and paste it to the text edit box provided. Be sure that the entire key is on one line, with no line breaks. Click on the OK button. It will take a few minutes for the new key to processed.

The next step is to configure the GUI client. Open up WinCVS and go to the preferences page. It should look similar to this Mac version:

Broken link

Note that the username should be your "unix" sourceforge username and that the authentication type should be ssh. Under Windows you will have to manually specify the location of the private key on your machine, ie the location of id_dsa.

One final step: SSH keeps a database of hosts it has connected to. Before WinCVS or MacCVS can connect the sourceforge CVS host needs to be added to this database. SSH to xmsf.cvs.sourceforge.net; you should get an announcement asking if you want to add the host to a list of known hosts. Say yes. You don't actually have to log in to the host (in fact you can't), but this step is neccesary to add the host to the database.

Checking out Sourcecode

Finally, you can select Remote->Check Out Module. Type in the module name (eg, "disxml") in the dialog box.