SML/NJ Project Howto

This is a collection of hints and pointers to help new users of SourceForge and CVS to use the facilities of the SML/NJ project. For general information on using SourceForge, see the SourceForge Documentation Manager and the "Getting Started with SourcForge" link on that page under the heading "General Documentation".

Note: loginname stands for the SourceForge user login name.

Project directory

The SML/NJ project directory path is:
   /home/groups/s/sm/smlnj/
This directory contains subdirectories htdocs and cgi-bin.

Logging in to your sourceforge user account

   ssh -l loginname shell.sourceforge.net
Your home directory will look something like: /home/users/m/ma/macqueen.

You can abbreviate the command to (e.g.)

   ssh sf-shell
by defining sf-shell as a host alias in your .ssh/config file:
    Host = sf-shell
    HostName = shell.sourceforge.net
    User = loginname

Moving files to sourceforge

You can copy an individual html source file (localfile) to your sourceforge home directory by executing a command like:
   scp localfile macqueen@smlnj.sourceforge.net:/home/users/m/ma/macqueen
I have not been able to use ftp (from SF) to transfer files into SF.

Setting up CVS access

  1. In your user Account Maintenance page, go to "Shell Account Information" and click [Edit Keys] next to "CVS/SSH Shared Keys". Insert contents of ~/.ssh/identity.pub file on your local machine into the text box. Make sure that when you cut and paste your key that it remains a single line of text! Sometimes spurious line breaks are added when your key is printed, and these will prevent CVS from working. You can verify that it worked by checking the contents of the .ssh/authorized_keys file in your SourceForge home directory.

  2. Set CVS_RSH:
         export CVS_RSH=ssh
    

  3. Run ssh-agent and ssh-add for convenience, to avoid having to repeatedly type in your ssh passphrase or SourceForge password:
         eval `ssh-agent`
         ssh-add -p <<EOF
         your pass phrase
         EOF
    
    These last three commands can be, and probably should be, added to your .profile or .login file. "your pass phrase" refers to the pass phrase that you gave when you created your ssh identity files with ssh-keygen. Note that some versions of ssh do not support the -p flag, in which case you will have to run ssh-add interactively and type in your pass phrase. Unfortunately, the version of ssh available on the SourceForge shell servers is one of these, so ssh-add has to be run manually after login.

  4. Create a host entry for cvs.sourceforge.net in your ssh config file (.ssh/config) like the following (replacing loginname with your SF user name, as usual):
        Host = sf-smlnj
        HostName = cvs.smlnj.sourceforge.net
        User = loginname
    
    This defines a standard alias for the cvs host that agrees with that used the CVS/Root files (in htdocs, for instance).

  5. Set CVSROOT:
         export CVSROOT=sf-smlnj:/cvsroot/smlnj
    
    Note the use of the alias "sf-smlnj" defined in the config file from the previous item.

  6. Now you can execute cvs commands without needing -d arguments, passwords, or pass phrases, e.g.:
         cvs update bugs
    
In order to execute cvs commands on the SourceForge shell server, you should run ssh-keygen from your SF account to generate a new ssh key, and then add that key to the end of your .ssh/authorized_keys file. You can also define CVS_RSH and run ssh-agent in your .profile at SourceForge to make things simpler.

Updating web pages

The htdocs directory in the smlnj project home directory (/home/groups/s/sm/smlnj) contains the web pages for the project. These web pages can be accessed using either of the following URLs:
http://www.smlnj.org
http://smlnj.sourceforge.net/index.html
The htdocs directory is a CVS working directory created by checking out the htdocs module from the project CVS repository. The Bell Labs copy (in /home/sml/Doc/WWW/smlnj) is also checked-out from the repository ("htdocs" and "smlnj" are both aliases of the pages module in the repository). If you have extensive edits to perform on the web pages, we recommend that you check out your own private working copy, make the edits, test them, and commit the changes. After the changes are commited, "cvs update" must be performed in the two directories
/home/groups/s/sm/smlnj/htdocs (at SF)
alice:/cm/cs/what/smlnj (at Bell Labs)
to synchronize them with the changed repository. You can do the update on the htdocs directory yourself as described in the next paragraph, but you may need to send mail to Bell Labs to have the update done on that copy until we set up automatic email notifications of commits to the web pages repository.

To actually update the pages at SF, you login to your SF account and do (e.g.)

   cd /home/groups/s/sm/smlnj/htdocs
   ... set up cvs ...
   export CVSROOT=sf-smlnj:/cvsroot/smlnj
   cvs update htdocs


Dave MacQueen
Last modified: Wed Feb 21 14:10:48 EST 2001