Everyone needs source control of some sort. You might think it is unnecessary for a small one-man or one-woman operation like mine. I used to think that. But I have been using Subversion for some years now, and I find it indispensible. Eric Sink has an old but still very relevant article explaining single user source control.

If you are new to source control then Eric has also written a Source Control Howto. This is aimed at SourceGear’s own product, Vault, but most of what he says is generally applicable to any source control product.

If, like me, you use Subversion then there is also online documentation available.

I should say, at the outset, that I don’t consider Subversion to be better than Vault. I use it because it is what I got to know and it works for me. One of the things about being a solo developer is that any of the minor differences between the various source control systems are largely irrelevant. I don’thave to worry about locking files, or how different files are merged. Working on my own means that concurrency issued just do not arise.

In the past I have used Subversion as a Windows service. There are two ways you can set it up, either as a service or as an Apache server. The service was easier to set up and I haven’t had the need to provide access via http. I also installed TortoiseSVN which is a Subversion client which integrates with Windows Explorer. Everything has worked well.

Some people have integrated source control with Visual Studio. I have never felt the need to do this. There were two reasons. First, I version more than source files. For example, I version documentation, not because of the versioning, but because it provides an easy backup. And secondly, because I stick more than source files into the source control, it seemed to me to be a separate exercise to the coding.

But there are some problems with this approach. The main one is forgetting to commit my changes. It goes something like this. I work at home in an office outside of, but attached to, our house. This is a good way to work. It means that I leave the house to go to work. But early in the evening my wife is likely to come out and tell me that dinner is ready. So I stop what I am doing and go and eat. Then I have coffee after dinner, maybe watch some TV, and figure that I am not going back to work. So I go back to the office to turn everything off. By now it is raining, and cold, and I want to get back inside in the warmth. I’ll check in my work in the morning, I say. But, of course, I don’t. I figure I’ll just make a few more changes and then check it in.

So I decided that I needed something better. I could, of course, embark on a course of self-discipline, but from past experience I know that that won’t work.

I then discovered VisualSVN. This integrates TortoiseSVN into Visual Studio, and it works with VS 2003, 2005, and the lastest version with VS2008. And I have to say it is brilliant. Because it uses TortoiseSVN I still have access to the tight integration with Windows Explorer for those files that do not form part of the development. And it is not intrusive. There are small, but noticeable, icons, like traffic lights, next to the files in Solution Explorer. After using it for a morning I am hooked.

VisualSVN is not free. There is a 30 demo, completely uncrippled. After that it is US$49. Given the good exchange rate between the AUD and USD at the moment it seems like a worthwhile investment.

VisualSVN works with Subversion as a service. However, they also have a free product called VisualSVNServer which is an Apache based server. I thought I would give this a go just to see what I thought. I didn’t want to spend time setting up a server but I thought, what the heck. VisualSVNServer is a 6meg download. You get an msi file and it just installs. You tell it where to install and where to put your repository. You can change port settings if you want. I didn’t need to. The thing that I thought might cause me a problem is that I am running 64 bit Vista. But it didn’t seem to care. It just installed and it runs fine.

If you want Source control, and if you are a developer then you need it, and you want integration with Visual Studio, and you want a simple install then this is the product for you. You will also need to install TortoiseSVN, but it is also a very simple installation process.

So far I couldn’t be happier.