Saturday, February 16, 2008

OpenSVN Review

UPDATE #2: Assembla is no longer free, so I looked for other options and I've switched to XP-Dev.com.

UPDATE #1: Following writing this review, and the suggestion in the posts below, I looked into using Assembla. I've now been using it for several months for version control for home. I find it very fast, and haven't seen it go down once. I highly recommend it!


ORIGINAL POST:

I recently bought a laptop, so that I don't have to be sat at a desk to ruin my eyes. I wanted to use my laptop for a bit of coding, but Perforce, the version control system I had been using, was installed on my desktop machine. This meant that my desktop had to be turned on, for my laptop to be able to check things in and out. This bugged me, so I started to look for solutions were my source could be hosted online.

There are lots of companies out there who will host your source code. They mostly use the open source systems CVS and Subversion (also known as SVN). Some companies charge monthly, with increasing fees for increasing server space and/or numbers of users. Some have a 'free' service, but the restrictions are pretty tight. If you're interested in open source development, and don't mind the world seeing your code, then there are other free hosting options out there too.

I found one SVN hosting site which was completely free, didn't have tight restrictions, and didn't require that your code is open source - OpenSVN (OpenSVN.csie.org). It's operated by some students at National Taiwan University. As I'm always interested in a bargain, I thought I'd give it a try. After 5 weeks of using it, here are my thoughts:


  • The presentation on the OpenSVN site is poor. The other project hosting sites, with their art work and stock photos of people pointing at monitors, make you feel a lot more comfortable about putting your valuable source in their hands. Plus the OpenSVN site has some kind of bad certificate, which makes IE7 give dire warnings.
  • After the initial setup of the account, you don't need to go back to their site. Just use TortoiseSVN (or a similar windows client) to manipulate your files. I chose TortoiseSVN, and after a short learning period, I really like it.
  • The server has been down on four days of the 5 weeks that I've been using it. This hasn't caused big problems for me, as I just code on my own, for fun, and am OK waiting for them to fix it. If however I was working in a group, at a serious development company, this level of down-time would be unnacceptable.
  • I've not needed tech support, but doubt that whatever they provide would be on a par with what a professional hosting company could provide.
  • Initially I was a bit concerned about whether it would be too slow. I've found it to be fast enough for my needs - just checking in/out relatively small amounts of code. I'd say it takes about 15 seconds to either check in, or get latest, for an average amount of change. If however you were thinking of storing larger binary data (e.g. textures) then it may be worse.


Overall, OpenSVN is OK. I find the occasional down time acceptable, considering that it's free. If you use it, I recommend that you also make your own backup procedures, and not rely on theirs. For home development, when it comes to backing up a version control system, I'm of the belief that it's OK to just back up the last good version. If the history gets lost, then it's just tough turkey.

If you're new to SVN and hosted version control, then it's a good idea to use OpenSVN first so you can get a better feel for what your needs are before shopping for a commercial/reliable service.

What do you use?

Friday, February 01, 2008

Version Control at Home

If you spend time programming at home, I strongly recommend using some kind of version control system, such as CVS, Subversion or Perforce.

Basically a version control system is a repository which stores a history of all the major versions of your source files. You can modify a bunch of files, and then 'check them in' together. Since the system knows all the versions of your files, you can do things like:
  • Compare different versions of a file, to see what changed, and when code was introduced.
  • 'Get' and old version of all your source. This can be handy if your code stops working, and you have trouble working out why. You can go back, find the version which last worked, and then compare the versions.
  • Discard the changes you've made since you last checked in, reverting back to the last good version. This is one of my favourites :)
You can also do more advanced things, like branching the code base. This can allow you to keep a stable branch, if you're going to attempt some big/risky changes.

CVS and Subversion are both free. Perforce is free for small scale personal use (2 users max). Perforce is quite popular in gaming companies too. I use Perforce at work, and so decided to use it at home too. Installing a version control system can be a bit daunting, but there are good tutorials out there if you look.

I don't recommend version control to the absolute beginner, it's better to focus on learning the language and making little sample apps. But if you're going to work on one program, for a while, then I recommend it.