Spikecluster SourceForge Instructions

Getting Started
Setting Up SSH Access
CVS: Creating a Module
CVS: Checking Out
CVS: Committing
CVS: Releasing
WWW: File Releases
WWW: Screenshots
ETC: Version Numbers
ETC: Backing Up
ETC: Links

Getting Started

  1. Create a SourceForge user account. In the instructions below, you are assumed to be logged into the sourceforge.net site with this account from a Win 2000/XP PC. For simplicity, they also assume that you are accessing the spikecluster repository, although it is straightforward to substitute another SourceForge project.
  2. Install Tortoise CVS on your local machine and create a folder to use as a 'sandbox'. Enter this folder in the Included Folders field of the Advanced tab of the Tortoise CVS Preferences. It is also useful to deselect the Prune impty folders option in the Policy tab of the Preferences (this can prevent empty modules from becoming inaccessible).
  3. Install the complete PuTTY package, including Pageant.

Setting Up SSH Access

  1. Generate an SSH-2DSA public/private key pair using PuTTYgen and assign a passphrase.
  2. Save the private key in the directory containing the Pageant executable. Name it, e.g., SourceForge.ppk.
  3. Go to your SourceForge Account Maintenance page and scroll to Host Access Information. Upload the public key.
  4. Attempt to log into the CVS server (e.g., user@cvs.sf.net) using SSH. Although the server will not allow you to actually connect, it will create a home directory for you on the SourceForge shell. This only needs to be done once for any user account.
  5. When performing CVS operations, Pageant will allow secure access to the SourceForge CVS server without requiring repeated manual logins. To do this, start Pageant, right-click on the system tray icon and select Add Key. Select your SourceForge private key and enter the passphrase.

Creating a New Module via Tortoise CVS

A CVS module is a collection of source code files meant to be edited together. They are stored and managed in a single folder on the CVS server managing the project repository.
  1. Right click in the SANDBOX and make a new directory with the name of the module to be created. Right click on this directory and choose CVS->Make New Module.
  2. Enter the following CVSROOT:      :ext:USER@cvs.sourceforge.net:/cvsroot/spikecluster
  3. Confirm the name of the new module in the Module field and click and click OK. If successful, a green check mark appears on the icon for the module folder on your local machine.
  4. The newly created module will appear in the SourceForge WWW CVS browser after a delay of upto a few hours. It is, however, available for check out and use immediately after creation.
  5. Sourceforge does not support the Fetch List button in Tortoise CVS. Use the Sourceforge WWW CVS browser to see a list of available modules.

Checking Out a Module via Tortoise CVS

Checking out refers to the act of obtaining local working copies of the files in a module. If the files already exist on the local computer and they only need to be updated to reflect any changes that may have been made to the CVS copies, use CVS Update instead.
  1. Right click in the SANDBOX directory and click CVS Checkout. Enter the following CVSROOT: :ext:USER@cvs.sourceforge.net:/cvsroot/spikecluster        and enter the name of the desired MODULE.
  2. If a folder with the name MODULE already exists in the SANDBOX, the CVS files from the repository for that MODULE are copied to that folder. If no such folder exists, one is created before copying files. In either case, the icon for the folder should show a green check mark to indicate that it is managed by CVS.

Committing Files via Tortoise CVS

Committing refers to the act of saving changes made to local copies of CVS managed files. If another developer has also modifed the files since you last checked them out or committed them, you will be asked to resolve any differences in the two versions.
  1. If the icon for a file in a local CVS directory has a purple ? mark overlaid, the file is not yet part of the CVS tree. In this case, right click on it and choose CVS Add.
  2. If a file is part of the CVS tree but has been modified since it was last checked out or updated, it will have an orange + mark. To merge the local changes into the CVS repository, select all files that need to be committed, right click and choose CVS Commit.
  3. Enter any desired comments and click OK. The icons of the committed files change from orange + overlays to green check marks.
To make a patch file recording changes to code without altering the CVS repository, use CVS->Make Patch rather than CVS Commit.

Releasing CVS Files via Tortoise CVS

Releasing refers to the act of removing local files from CVS management. The released files are committed to the CVS repository and are usually deleted, although they need not be.
  • Right click on the module folder and select CVS->Release. You will be asked whether the local files should be deleted. Note that care is needed if you do not delete them, as they are no longer managed by CVS and extra effort will be required to merge them back into the repository code.

Uploading File Releases

File releases are complete snapshots of a package made available for general users. "Package" here means a self-contained subunit of the spikecluster code. Releases must be created and named/numbered manually as follows.
  1. Collect all of the files (.m, .fig, documentation, etc.) needed for a user to install the code on a local machine and zip them into a single file. Include the release number in the name of the zip file. Place the zipped file at the root of your hard drive for easy access.
  2. FTP to upload.sourceforge.net and login as anonymous with your email address as the password. Set the FTP client to binary mode (bin on command-line clients).
  3. Change the current directory on the remote server to /incoming and upload the release zip file.
  4. Go to the Project Admin page and select Releases. Scroll down to File Release Packages. If this is the first time this package is being released, first enter a new Package Name at the bottom of the page. Once a package has been defined, the release zip file uploaded above can be added using Add release, entering release notes/details and selecting the newly uploaded file. Note that there may be a delay of a few minutes after the upload before the file appears on this WWW page.

Updating the WWW Page

The project WWW space (and upto 100 MB of storage space) are on the UNIX shell server shell.sf.net and can be accessed via ssh using the same USER/PASSWORD used to access a user account on SourceForge.net.

5 MB of personal space for USER is located on this server at
while the 100 MB of project space is located at
and the WWW space aliased by http://spikecluster.sourceforge.net is at
The quotas are soft; i.e., they can be overrun temporarily.

To upload files to these directories, use SCP/SFTP to securely copy files to shell.sf.net.

Uploading Screenshots

Screen shots must be JPG, GIF or PNG format files of ≤ 300 kB, between 150x150 and 640x480 (width x height). 6 screenshots of this size are allowed project via this mechanism.
  1. Go to the Project Admin page on SourceForge and select Screenshots.
  2. Image files meeting the above specifications can be uploaded from this page. Screenshot files can also be reordered and deleted here.

Code Revisions and Version Numbers

  • Every file in a CVS repository carries a revision number which is incremented every time that file is committed (the full revision number is actually 1.###, but ordinarily only the ### part changes. This process happens automatically every time changes are committed.
  • A file or collection of files can further be tagged at any given time to provide a development snapshot. This is accomplished in Tortoise CVS by right-clicking on the file(s) and selecting CVS->Tag. Modules should as a rule be tagged when they are included in a file release to allow easy recreation of the code state for any release.
  • The change history for text files is summarized (by Tortoise CVS) using the CVS->History, CVS->Revision Graph and CVS->Annotate commands. The History and Revision Graph commands show the time, author and comments for each revision made to a file. The Annotate command shows the revision and author responsible for each line in the file.
  • Particular revisions/tags (and branches; see notes below) for any file or collection of files can be retrieved using CVS->Update Special.
  • CVS Branch allows more complex code development paths.

Backing Up Project Files

Three sets of files should be backed up: the CVS repository, file releases, and project directories. Restoring data from these backups is described in the SourceForge documentation.
  • The entire CVS repository can be backed up by saving a copy of the nightly tarball at: http://cvs.sourceforge.net/cvstarballs/spikecluster-cvsroot.tar.bz2. This file is updated once a day when write activity occurs in the CVS repository.
  • As file releases are not managed by SourceForge, local backups should be saved when they are uploaded to SourceForge.
  • The project directories (including www space) can be backed up by ssh'ing to shell.sf.net and typing: tar -cvzf spikecluster_project.tar.gz /home/groups/s/sp/spikecluster/ The resulting file can be copied off of the SourceForge shell via SCP.


CVS/SourceForge Overview

SourceForge CVS (Version Control for Source Code)
SourceForge Guide to the File Release System
Manual      CVS "Cederqvist"
Manual      CVS "Red-Bean"

SSH Access

Software    PuTTY
SourceForge SSH Key Generation and Usage

Shell/WWW Services

SourceForge Data Backup and Restore
SourceForge Project Web, Shell and Database Svcs
SourceForge Screenshots

Tortoise CVS

SourceForge CVS Client: TortoiseCVS with PuTTY
TortoiseCVS Tortoise CVS with Sourceforge


SourceForge CVS Client: WinCvs with PuTTY
Software    WinCVS

Matlab Source Control Integration

WWW Forum   Matlab & CVS
Software    PushOK CVS SCC Proxy