Handy commands for SourceForge: export CVS_RSH=ssh cvs -z3 -d:ext:mdoar@javadiff.cvs.sourceforge.net:/cvsroot/javadiff co -P jdiff ssh -l mdoar javadiff.sourceforge.net scp jdkchanges.zip mdoar@javadiff.sourceforge.net:/home/groups/j/ja/javadiff/htdocs/ scp jdkchanges.zip mdoar@jdiff.sourceforge.net:/home/groups/j/jd/jdiff/htdocs/ scp index.html mdoar@javadiff.sourceforge.net:/home/users/m/md/mdoar/jdiff/htdocs crontab when logged in as mdoar in /home/users/m/md/mdoar: 0 1 * * * /home/users/m/md/mdoar/nightly.sh > /dev/null /home/users/m/md/mdoar/nightly.sh contains: cd tarballs cvs -Q -d:pserver:anonymous@cvs1:/cvsroot/javadiff export -Dtomorrow jdiff if [ -d jdiff ] then echo "Tarball created on: " > jdiff/CREATED_ON echo `date` >> jdiff/CREATED_ON tar czf /home/groups/j/ja/javadiff/htdocs/jdiff/jdiff_latest.tar.gz jdiff rm -rf jdiff fi These are the CVS repository backups, only changed when something has changed: http://cvs.sourceforge.net/cvstarballs/javadiff-cvsroot.tar.bz2 ftp upload.sourceforge.net anonymous cd incoming put jdiff-1.1.0.zip put jdiff-1.1.0-src.zip cvs tag JDIFF_1_1_0 . Creating a src package: mv jdiff jdiff-1.1.0-src find jdiff-1.1.0-src | zip source -@ mv source.zip jdiff-1.1.0-src.zip (Probably neater to do it in Ant and exclude CVS directories)