Weblog

Version control for the solo programmer

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).

Share and Enjoy:
  • del.icio.us
  • Google Bookmarks
  • DZone
  • LinkedIn
  • SphereIt
  • StumbleUpon
  • Technorati

13 Responses to “Version control for the solo programmer”

  1. Will Says:

    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. :)

  2. Andrej Koelewijn Says:

    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…

  3. Martin Schapendonk Says:

    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.

  4. Andrej Koelewijn Says:

    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?

  5. schapendonk.org » Local version control with just TortoiseSVN Says:

    [...] 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. [...]

  6. Martin Schapendonk Says:

    Andrej, see the trackback above. I just made a small posting about this on my own blog.

  7. Ben Says:

    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.

  8. Bijay Rungta Says:

    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

  9. Dennis Martinez Says:

    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.

  10. Jorge Diaz Tambley Says:

    I vote for subversion, my hosting plan allow for a subversion repository and I use RapidSVN at the client side

  11. Mark Says:

    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.

  12. Andrej Koelewijn Says:

    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.

  13. Jim P. Says:

    Mark,

    Where did you see that Accurev was free for individuals?

Leave a Reply

Technology