Using Subversion

These are some notes on using the subversion (svn) version control system for the game group project class.

Repository

The prototype repository location is

svn+ssh://<username>@gl.umbc.edu/afs/umbc.edu/users/o/l/olano/pub/gaim/<project>/trunk

You will need to replace the <username> with your UMBC username, and the <project> with your project name. The project names are

Game <project>
Conduit conduit
Derelict derelict
Detached detached
Earn Your Wings wings
First Person Flight flight
NOM! nom
Paper Pugilist pugilist
Penance penance
Puzzle Box box
Shoot Me Plenty smp
Time Bloke bloke
Umbrella umbrella

Normal svn usage has your main project under <project>/trunk, branches from the main project (e.g. for some experimental feature) under <project>/branches, and specific named releases (e.g. demo, alpha, beta, final) under <project>/tags. I have created this structure for each project (the svn repository address above is for the trunk). Merging branches back into the trunk is tricky in svn, so I don't expect many of you will use them, though if you are comfortable enough with svn, you certianly can. I do expect that every project will have tags to keep track of what you showed at the various milestones.

Operations

There are several ways you can talk to the svn repository, but they all support the same basic operations:

checkout
Get a new copy of your repository to start working
commit
Send your changes back to the repository. Don't forget to include a good short message
update
Get someone elses committed changes that have happened since your checkout or last update. You can also update to a specific version, though I'll usually do this in a fresh checkout to avoid losing work.
add
Tell svn to start tracking a file. It isn't in the repository until you commit
remove
Remove the file (duh!). It'll only be removed on the repository after you commit, and only for that version forward. You can still find the file if you update to a version when the file existed.
ignore
SVN keeps a list of files and patterns to ignore (e.g. any file ending in .o). Keeping a good up-to-date ignore list can keep you from accidentally checking in files svn shouldn't track
 

Most svn commands will require you to type in your password at least one, sometimes several times. I'm working on fixing that, hopefully by the time prototypes are done. For now, you'll get really good at typing your password.

Windows

On Windows, I recommend using TortoiseSVN. Right click on the desktop to check out a copy of your repository. After that, all svn commands are available by right-clicking in a Windows directory window for your project.

Mac

Unlike Windows, the command-line tools (see below) come with the MacOS, but no spiffy easy-to-use user interface. There's nothing free that is as good as TortoiseSVN. There are a couple svn tools you can buy that are reported to be pretty good, but I haven't tried them. What I use is a free application called SourceTree. It is actually designed for git and mercurial, but you can check out an svn repository by using the regular svn url, and telling it to convert locallyto git. Be sure when you commit to check the "Push commits immediately to Subversion" box! If you do not, you will need to click the "Push" arrow to actually complete the commit.

Command Line

If you are comfortable working in a unix, mac or windows command line, all of the subversion operations have command-line equivalents:

svn checkout ...
svn commit ...
svn update ...
svn add ...
svn remove ...

To find out more about any of these, use 'svn help' (just 'svn help', or specifics with 'svn help update')