This post is dedicated to a friend I helped getting started with Subversion (SVN). Hi man! :p Seriously, I didn't know that, in 2010, it could be possible to work without such kind of system.
In this post, I'm not saying that you should use SVN, I'm just presenting the basic principles and functionalities. I'm saying use a revision control system! I had a lot of pain in the past with SVN when it came to merge and the eternal joke: Finally in the next version, yes, merges will work and be easy to do!" No, it never happened! Some people claim Mercurial or Git is so much better. Fair enough, try them and let me know, I'm interested, until then I'm going to use SVN.
SVN is a revision control system that manages for you the changes you do on a code and blend it with the changes someone else has done on the same code. You can even duplicate the code you are working on, on the same computer or on several computers. Edit different parts on each location, send everything to the server repository and get all the changes applied on each computer! Wonderful isn't it?! It's much more! With some software like Trac, you can browse the full history of the changes made, by who and when. So useful for debugging! SVN also allows you to tag a state of the code at a time to save this code as a specific version if you want.
SVN could be use with TortoiseSVN on Windows with a GUI style or in command line. I'm presenting here the command line way to make it simple but I actually use as much as I can TortoiseSVN.
To get started, it's easy: create an account on SourceForge or Google Code. Checkout the repository, add your source files, commit them and that's it!
When learning programming at school, just before starting to work on their first project, the students should learn how to use a revision control system. As a matter of fact, none of the schools I went during my education were using or even talking about any... I hope it has changed!