On this page:
Getting Subversion
Your Subversion repository and homework directories
Homework submission
Command reference
Essential verbs


In this course we will use Subversion for collaboration, version control, and homework submission. This guide will show you everything you’ll need to use Subversion in this course.


Subversion is a version control system that keeps versions of your files in a "repository", which we will provide for you on a server. The repository will enable you to retrieve ("checkout", "update") and store ("commit") your files from multiple locations, and it will enable us to easily access your code for grading. It also provides a backup mechanism for you in case you ever need to revert to older versions of your code.

Getting Subversion

The Subversion client may be downloaded at:


Binaries for several systems such as Windows, Mac OS X, and Linux are available. If you have Windows, for example, you should the follow the link to “Windows binaries”. If you have Linux or Mac OS X, Subversion is likely pre-installed.

You can confirm your Subversion installation by running it at your system’s command prompt:

$ svn help

usage: svn <subcommand> [options] [args]

Subversion command-line client, version 1.6.5.


Your Subversion repository and homework directories

You will use Subversion to (1) keep track of revisions as you work on your assignments, and (2) submit your assignments for grading. If you are in pair number P, then your repository is located at


You should svn checkout the above URL to create your local working directory. If you just want to view what files are there, you can also load it in a web browser (but you won’t be able to commit anything from the browser).

For each assignment N, you will create a directory in your local working directory named assnN containing each problem in a separate racket file named M.rkt, where M is the problem number. For example, if assignment 1 has three problems, your repository should look like this:


 - assn1

   - 1.rkt

   - 2.rkt

   - 3.rkt

Whenever you want to push your changes to your repository, you will need to svn commit them. (You will need to svn add them first—see the command reference below).

You could then verify the current state of your work for assignment 1, for instance, by pointing your browser to


Just like the design recipe asks you to run tests at the end of a design cycle, you should check on your homework assignment on the server whenever you think you’re done.

You should commit all of your work every time you finish working on a problem. This ensures that we can track problems within pairings, that you can prove your innocence in terms of code theft, and that you always have a backup of your work.

Homework submission

On the due date, an automated script will collect every pair’s current solution at midnight. Each time you commit an intermediate solution you’re guaranteeing yourself to have something available at the deadline. We will grade the code that we collect at midnight and ignore any revisions that you submit later. No exceptions.

Command reference

Subversion commands are of the form:

$ svn verb [adverbs] [nouns]

The verb says what to do, such as to update or add information on a file. The optional adverbs say how to do it, for example -q for quietly or -N for non-recursively. The optional nouns are usually files or URLs on which to act.

Essential verbs

There are two useful verbs that ask for information:

There are various verbs for telling Subversion which files in your local directory it is responsible for. Here’s the most common one:

And there are several verbs for talking to the repository: