All posts

Battle of SCM Clients

Originally published on macresearch.org, around 2008. Reproduced from the author's archive; some links may no longer resolve.

Battle of the Subversion Clients

Source Control Management (SCM) or version control is all about keeping a historical record of changes made to a body of data, such as a computer program. Think of it as a more powerful version of Time Machine: each time you make a change to your data (eg program), you commit the changes to a repository, which acts as a historical record of the evolution of the data in question. Multiple users can access the same repository, retrieving any revision of the data they choose, and committing any changes they make. This basic approach forms the basis of all modern software engineering, and it would be safe to say that the success of open-source projects rests largely on the ability to collaborate via SCM systems.

Things have been getting quite exciting in the world of SCM lately, after a relatively long period of staleness. To begin with, the old man of SCM — the Concurrent Versions System (CVS) — has been largely supplanted by Subverison (link no longer available)). The name is quite appropriate, because Subversion effectively subverted CVS by stealing its commands, making it easy for programmers to adopt, and adding a few improvements.

For some, that wasn’t enough, and the last couple of years have seen a boom in SCM systems, predominantly so-called distributed version control systems. These include Git (link no longer available), Mercurial (link no longer available), and Bazaar (link no longer available) to name but a few. We won’t get into the finer points of each system here. Suffice to say that they are all considerably more capable than Subversion or CVS.

The early-adopters may have moved on to greener pastures, but most of the developer world still lives in the land of Subversion, and the Mac developer community recently welcomed two new additions to the ranks of the native Subversion clients: Cornerstone (link no longer available) and Versions. For years Mac programmers had to get by with a meager offering of CVS and SVN clients, but when it rains it pours, and now we have the choice of two very well written source control clients that are exclusive to the Mac.

“Which is better?”, I hear you ask. As with most things in life, it’s not a simple question of which is better, because each has advantages and disadvantages, and the best product for you will not necessarily be the best for someone else. Ultimately you need to try both products yourself, and make a choice, but to try to make the decision a bit easier, I’ll mention some of the things that I do and don’t like about each product.

Both apps are very well finished, perhaps in some part due to the competition that undoubtedly exists between the developers. The main windows of each are quite similar, though in Versions, working copies are grouped together under repositories in the source list, and in Cornerstone, repositories are listed in a separate table. Although the Versions approach makes immediately clear which working copy belongs to which repository — an advantage — I found it a bit confusing at first, because it wasn’t clear what would be displayed when I selected a repository in the source list. Due to the nesting of working copies under the repository, you might expect that selecting the repository would show all working copy files originating from that repository, but it actually shows files in the repository. In any case, you quickly get used to how it works.

[image: Versions Window — no longer available]
Versions main window.

Probably the biggest advantage that Cornerstone has over Versions is its built-in file comparison tool. It is a pleasure to use, and makes comparisons between the working copy of a file and last revision in the repository, or between different revisions in the repository, only a click or two away. Nice. What isn’t obvious is whether you can compare the working copy with other revisions in the repository: It’s either not possible, or non-intuitive.

[image: Cornerstone Window — no longer available]
Cornerstone main window.

Versions shining light is probably its timeline, which lists log messages and changed files in a single table, grouped by day. This can make it easy to quickly browse your latest changes, but it does have some pretty serious limitations. In particular, you can’t filter the table of messages in any way. For example, you can’t call up all log messages containing a certain piece of text, or even request log entries containing a particular source file. This would seem to be a serious shortcoming, and severely limits the usefulness of the timeline. Hopefully the developers will fix this in the not too distant future.

[image: Versions Timeline — no longer available]
Versions timeline.

If Versions suffers due to an inability to filter log entries, Cornerstone seems to have the opposite problem. In Cornerstone, you can’t view a full log of recent entries. Instead, you are presented with a guitar-tablature like timeline, with one row representing each of the files you have selected. You can then click revisions on the time line to see log entries and file contents, one at a time. Select two revisions of the same file, and you are presented with a file comparison showing differences. You can also filter the time line in any number of different ways, making for a very powerful timeline tool, even given its inability to display a full list of recent log messages.

[image: Cornerstone Timeline — no longer available]
Cornerstone timeline.

There is one more aspect where the two products differ significantly: price. You can pick up Versions for 39 Euros (about $49), but Cornerstone will set you back $69. It’s not chalk and cheese, but certainly worth taking into account.

On the whole, I would have to say Versions is targeted at a less sophisticated subversion user. It’s cheaper, and the UI is a bit simpler. It also offers free online subversion hosting, which would appeal to the subversion novice.

Cornerstone is quite a bit more powerful, and will appeal more to the experienced subversion user. It’s integrated file comparisons, and well thought out timeline tool are standouts. It costs a bit more, but if you use subversion daily, it may be worth the price.