You know the situation:you’re the only programmer on what is supposed to be a very small project. So small, it seems overkill to install a version control server. And it’s too much trouble to install the server software on your workstation.
So you start working in a local folder without version control. But soon enough you wish you’d used version control. Maybe because you’d like to read your old commit logs to find out why you made that change some weeks ago. Or maybe because you wish you’d be able to undo that change that didn’t really fix the problem.
Today i was reading up on some of the new distributed version control systems, where every developer can have his own repository. Dave Dribin has written some interesting posts comparing Git, Mercurial and Bazaar: Choosing a Distributed Version Control System and Why I Chose Mercurial.
I used to think that distributed version control systems were mostly useful for very large projects, with large numbers of developers. But creating a local repository with mercurial is so easy, you don’t even have to install some server repository process, that it’s also ideal for solo programmers. Basically you just create a folder for your sources, initialize it for version control, and now you have a version controlled project.
You can download the windows version of Mercurial (or Hg as it’s also called) here: Mercurial binary packages for Windows and Mac OS X. There are also versions available that include Tortoise for Hg.
Run the installer, and then open a command prompt. Create a folder for your project and initialize it for Mercurial:
> mkdir myproject > cd myproject > hg init
Mercurial will create a .hg folder where it will store all version information. You can now add and commit files like you’re used to with any other version control system. For example:
> notepad readme.txt > hg add readme.txt > hg commit -m "Initial release"
There’s no excuse not to use version control on every project! For more information on Mercurial you can start here: Mercurial Quickstart, and Distributed revision control with Mercurial (book).

January 4th, 2008 at 08:43:47
As an FYI, I use DevGuard.com for my personal Subversion repository – I’ve been using the individual for over a year now and been very, very happy with it. Much, much cheaper in terms of time and hassle than any other solution I’ve found (at one point had set up CVS + SSH on a personal server!).
No affiliation other than a happy >$8/month user.
January 4th, 2008 at 10:26:18
Yes, in some situations that might be a really good solution. But if you’re doing a small solo project for a customer, they probably won’t appreciate the fact that you’re storing their sources offsite. Maybe it’s just a question of education…
January 4th, 2008 at 11:50:08
I guess that you mostly use Subversion at the moment. Perhaps even TortoiseSVN?
In my experience it doesn’t take that much time to create a local Subversion repository (server software isn’t necessary for SVN) and be up and running in about the same time (maybe quicker, since you don’t have to install Mercurial if you already have SVN
).
This, combined with the fact that Subversion is more widely supported in IDEs (e.g. JDeveloper) makes Subversion still my version control tool of choice in most cases.
January 4th, 2008 at 14:09:57
Yes, we currently use mostly subversion en tortoisesvn. Can you create a subversion repository with just the client svn tools? I though you had to install the server version?
January 4th, 2008 at 16:19:14
[...] I just read Andrej Koelewijn’s post on the IT-eye blog, Version control for the solo programmer, about installing Mercurial, a Distributed Version Control System. The most important reason for this exercise was to create a local, single user repository. [...]
January 4th, 2008 at 16:35:17
Andrej, see the trackback above. I just made a small posting about this on my own blog.
January 4th, 2008 at 21:02:40
If you’re set on using SVN but don’t want to deal with the setup, checkout the trac/svn JumpBox:
http://www.jumpbox.com/jumpbox-for-tracsubversion-software-project-management
Super easy to setup, it’s what I use for personal projects. I just run it off my laptop.
January 4th, 2008 at 21:11:35
Check out Assembla at http://assembla.com/
They offer you free repository and integration with trac for your Projects
check this post “Free Subversion Repository for Non-OpenSource Projects” at http://davidjmcclelland.com/eLearning/2007/02/27/free-subversion-repository-for-non-opensource-projects/
I am using it currently and seems good to me..
http://lamp-ajax.blogspot.com
January 4th, 2008 at 21:25:52
For a lot of my recent solo projects, I’ve been using Unfuddle (http://unfuddle.com). They have a free plan, which includes a Subversion repository and a great interface for your own notes and milestones for your project. It’s a nice tool that I’ve found very useful.
In any case, great post. I wrote a while back that a source code repository is absolutely essential for all developers, no matter if they’re working on a small project on their own. Seems like too few people actually do it.
January 4th, 2008 at 21:32:21
I vote for subversion, my hosting plan allow for a subversion repository and I use RapidSVN at the client side
January 4th, 2008 at 22:00:46
I used to use SVN for my personal home projects until Accurev started providing free licenses for individuals. I think up to groups of 5 now? Ditched SVN in a heartbeat, but we use Accurev at work, so I was familiar with it. But man, no comparison.
January 4th, 2008 at 22:03:09
I can see how offsite hosted version control repositories can be useful, but i don’t think that i’ll be using this solution for small customer projects. Hosting source code offsite is a bit controversial.
Having a virtual machine (appliciance) for version control/bugdb/build server is a good idea. We have created a virtual machine containing subversion, trac and continuum, which we use for most larger projects where the customer doesn’t have their own solution. But quite often on small projects i also have to work on a small workstation, not a good idea to run the virtual machine on it.
Another issue with these virtual machines is that when you leave the customer, the customer has to maintain it, and quite often it’s too complex for them.
Also, i don’t mind not having integrated version control tools in my IDE. I currently use JDeveloper which has pretty good support for subversion, but i hardly use it. TortoiseSVN is sufficient.
January 5th, 2008 at 04:37:23
Mark,
Where did you see that Accurev was free for individuals?