At work we use Visual Studio and Team Foundation Server as our development environment. TFS in particular is really great, it provides source control and task management, perfect.

However, at home, when I'm coding sites like Recipe Binder and Track Playing, I use Visual Web Developer Express. This sadly doesn't support plugins, and there isn't a "TFS Express", so there isn't a way for me to protect my source code, or have change tracking. I've also found the various tasks I have for these websites scattered around, in emails, scraps of paper, and spreadsheets. I needed a way to backup my code, track my changes, and manage my tasks a bit better.

It sounded like a problem too far for a lone developer who wanted it all for free, however then I found this blog post by Trevor Power. He essentially had the same problem as me, and pointed me in the direction of 2 things, Subversion and Unfuddle.

Subversion I'd heard about before, but had never taken the plunge with it, simply because I'd not been able to find a suitable Subversion server to use (Google Code does it, along with a few others, but they require the projects to be open source).

Unfuddle on the other hand allows you to host unlimited Subversion repositories for free, with no restrictions about it being open source. But rather than just hosting my Subversion repository, it is also a project management tool, allowing me to create tickets and associate change sets with them, much like TFS does. It does a heap of other stuff too (which you can find out about via their tour), but I don't need those.

Unfuddle's free service, which is what I'm using, restricts you to just 1 project, and 200MB of space for your source code. However, source code being just text files, you're unlikely to hit that. The 1 project restriction isn't an issue either. Since you can create multiple Subversion repositories you can have one for each website you create. Then, within the project settings in Unfuddle you can create separate components - these you then name to represent each "project" you have, and assign your tickets accordingly. So, for example I have 1 main project, called "Chris Riley Projects", and within that I have a few components, "Track Playing", "Recipe Binder Facebook" and "Recipe Binder".

So, now when I have an idea or think of something I need to do I can create a ticket in Unfuddle, and then forget about it. And when I think about what I have to do, I have a list right there, that I can use just like my work item list in TFS. Then, when I "commit" changes to Subversion, I can associate that revision with a ticket, so that I know what changes were made for which ticket.

In terms of using Subversion, I'm using the TortoiseSVN Subversion client. This seems to be the most widely used client, and it is easy to see why. As you can't use plugins in Visual Studio Express you have to use it in Windows Explorer, but that isn't really an issue. Once you've got your files added to your repository, changed files are easily highlighted by TortoiseSVN, and you can commit back to the repository with ease. I'd go into more detail, but the best thing to do is to get acquainted with this excellent online Subversion book to understand the basics of Subversion, then install TortoiseSVN, read the help and get going!

So, all in all I now have my source code backed up, it is under change control so I know I won't loose previous work, and I have a way of working that means I don't have endless lists swimming around in my head. If this sounds anything like you, don't delay and get yourself sorted out!

Any questions on specific details fire away, I'll be happy to help if I can. I hope to post some more details about using Subversion at a later date as well, mainly my experiences with branching and merging, so keep an eye out for that.