This guide assumes that you have a basic working knowledge of Subversion. You can look at the class Subversion readme to obtain one.

Submitting your assignment involves preparing and tagging it in your Subversion repository. When grading, we will check out your group's tag and try to compile the code in it. If you aren't sure about these instructions, ask an instructor to clarify them for you. If you don't follow these instructions, you will make life more difficult for the people grading your assignment. Try not to do that.

You can break assignment handin into several steps:

Assemble your material
Look at what's already tagged
Tag your assignment submission

Assemble your material

Your group has code, and you have writeups for your experiments. Congratulations! Now it's time to hand everything in.

There should be some directory contains your assignment's code. In our examples here, we're going to use trunk as that directory. In this directory you should have:

Inside of doc should be a subdirectory for each of your groupmembers, named with that member's CS login.

Within your own directory should be:

Be sure to commit your material once it's ready!

To summarize, if your TAs were in a group, the files in their submission for a pretend assignment 1 might look like:

Look at what's already tagged

Tagging involves copying your project directory into the tags directory. Just as with the Unix cp command, copying the a directory to a location where a directory of the same name already exists won't overwrite the existing directory. If I do this:

  1. cp foo /bar (Create the file /bar, a copy of foo)
  2. $EDITOR foo/blah (Edit something in foo)
  3. cp foo /bar (Copy foo into /bar, NOT re-create /bar!)

Then I'll wind up with a directory structure like this:

What we should have done was delete /bar in between steps 2 and 3. Similarly, you need to make sure that someone in your group hasn't already tagged the project directory. You can do this with svn ls:

svn ls svn://foxwood/groupname/tags/

If you see that someone else has already created a tag, you need to delete it with svn rm. Don't be afraid of deleting material permanently; you can't. (The svn rm command merely removes files from the latest revision of your repository.) Additionally, Subversion has a log, so we can always sort things out after the fact.

If you want to delete a tag (because you tagged the wrong files or because you're overwriting an old tag other reason), run svn rm svn://foxwood/groupname/tags/tagname.

Tag your assignment submission

Ready to create the tag? Here are basic steps you can use to create a tag for your assignment, assuming that you are keeping the work you want to tag in the "trunk" area of your group's repository:

  1. svn update/add/commit
  2. svn cp svn://foxwood/groupname/trunk svn://foxwood/groupname/tags/asgnX -m "Tagging asgnX submission."

In step 1, you are making sure that whatever work you have in your local copy is committed to your group's repository.

In step 2, you are copying the "trunk" directory in your repository to a directory in "tags". This can be done multiple times, in case you want to update whatever the graders will see. You can create the tag from an arbitrary location in your group's repository, if you wish.

Tagging in Subversion is explained in depth in the Subversion manual:

http://svnbook.red-bean.com/en/1.5/svn.branchmerge.tags.html