You know, when you start coding you always (don’t you?) end up looking for a safe-and-easy way to track code changes, code commit log and manage the “back-to-the-past” feature (for example when you start coding a new feature and end up in a completely not working app)
Sometimes I used free services for repositories (like GitHub, BitBucket, SourceForge) to store my open-source projects (BitBucket plans allow you also to setup a single private repository with 1Gb of free space).
Now I’m setting up something like that for my Lab, allowing students to work from home and share their code with co-workers and professors. I’m happy with Mercurial, so I’ve installed on our web-server (latest Ubuntu Server) all the stuff for serving mercurial repositories with SSH authentication.