There's a lot of
Subversion clients out there, but TortoiseSVN is probably the easiest to pick up. It's all driven by Explorer context menus (those ubiquitous right click menus) so it's pretty intuitive.
Before I get into how to use TortoiseSVN though, let's go over the basics.
Subversion uses a copy-modify-merge style of version control, instead of the more traditional lock-modify-unlock style. The good thing about this is that files are never locked - you can always grab them and start working on them. The bad thing is that occassionally, you and another will have modified the same file, and you'll have to merge your changes. Depending on the file, what was changed, and how much communication there is between the 2 folks, merging can be anywhere from painless to a nerve-wracking disaster. Luckily, it's pretty rare for it to be a big deal in practice.
Okay, so here's the basic daily workflow of a Subverison user.
1. "Checkout" the latest copy from Subversion, which makes a copy on your hard drive (called a "working copy").
2. You modify your local copy, making whatever changes you desire.
3. You "update" your working copy, to make sure you have the latest changes. If there are any updates, then you need to retest your local changes to make sure they are still compatible.
4. You "checkin" your changes, and attach a nice note saying what you changed.
Subversion "repositories" (that's what we call the source server) usually have the following structure:
trunk\
branches\
tags\
All main development occurs on the trunk; this is the main line of development and always contains the latest code.
Branches are used to do development away from the trunk. This can be some particularly risky exploratory development (a "spike" in Agile terms), bug fixing a previous release while carrying on development of the next release on the trunk, etc. At some point, branch changes are usually merged back into the trunk - a process that's easier if done as frequent as possible.
Tags are simply snapshot copies with label. This are usually used as release markers. Subversion has no concept of a label, so this is really a copy - meaning you could checkin changes to it. You don't want to do that in most cases though.
Subversion revision numbers are repository wide - not file, or project wide. That means any change to the repository will increment the revision number of all files. In general, revision N and revision N + 1 of a particular file will have no differences.
The
Subversion Red Book is the word for all things Subversion. TortoiseSVN also has a
good manual, which talks not only of Tortoise but of Subversion.