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:
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:
README that holds instructions for compiling and
running your code.doc.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:
index.html. If it's PDF, name it report.pdf.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:
client.cppclient_support.hclient_support.cppCMakeLists.txtcreate.cfgblobcolors.txtREADMEdoc/bkorel/report.pdfdoc/bkorel/index.htmldoc/bkorel/demo.avidoc/dsblack/report.pdfdoc/dsblack/index.htmldoc/dsblack/vid.avidoc/fbaldass/report.pdfdoc/fbaldass/index.htmldoc/fbaldass/video.avidoc/sodomka/report.pdfdoc/sodomka/index.htmldoc/sodomka/escape.aviTagging 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:
cp foo /bar (Create the file /bar, a copy of foo)$EDITOR foo/blah (Edit something in foo)cp foo /bar (Copy foo into /bar, NOT re-create /bar!)Then I'll wind up with a directory structure like this:
/bar/bar/fooWhat 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.
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:
svn update/add/commitsvn 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