Like the rest of the world, we use Subversion for revision control here at Trollwerks by choice, and for the last few years we’ve been using svnX as our client. However, it’s getting a little long in the tooth now, so when it balked at reading the repositories of a project we’d been meaning to get back to for a while, we figured we’d take a look at two new native Mac clients that everyone’s getting all excited about and see if they merited switching to: the 1.02.59 release version of Zennaware Cornerstone
and the 1.0b5 beta version of Pico+Sofa Versions.
So we start out with the repository and existing working copy of our first iPhone project. Cornerstone goes smoothly and reasonably intuitively, took a few minutes to suss out how the timeline view works but yep, it’s pretty darn nifty, nicely integrated diff implementation particularly of note.
Versions, now, first thing it says is that it’s going to muck with the metadata so that the working copy is only accessible by svn 1.5 clients. Hmmm. Well, that’s a little presumptuous, isn’t it? However, we see that the latest message on their newsgroup (point to them for having one, don’t see an equivalent for Cornerstone) reads “We made a mistake when we dropped SVN 1.4 support in beta 5 and are scrambling to correct it … This release will ship as soon as possible, before the end of this week.” OK, then, in the meantime we’ll make a copy for it to play with. That goes smoothly, and it’s got a nice appearance as well; however, the file browser seems to always display the full tree, not the selected folder, which would be rather inconvenient in some highly nested repositories we have occassion to deal with, and we’re not overly impressed that it relies on external links for its diff. OK, we would be if it knew to link to CodeWarrior, which still has The Finest Diff Implementation Ever and we just wish someone would write a standalone one as good. But they haven’t, it doesn’t, so oh well.
Next test: The repository of the project we’re getting back to, which you recall above svnX’s balking at was the reason we decided to check these out. With both, we see a sheet come up asking us if we want to accept the certificate, rather than just svnX’s failure transcript which we have to go muck around with the command line to fix; good, good. Although I’ve completely forgotten my password. Versions makes me cancel the creation completely, Cornerstone creates the bookmark anyways and asks for login/password when we try to browse it; point to them there. So we find the password, and enter it, and point them at working copies. There’s a couple new files and half a dozen modified files, so we’ll see how intuitively the two handle that. And we have some mixed results. Cornerstone; have to drill down through the folders to see the individual differences [EDIT: Option-clicking disclosure triangle to open all children usually works on the second try]; can’t see both new and modified files at the same time [EDIT: The 'Changed' selector includes both]. Somewhat annoying. On the plus side, when we hit unselected commit, which is what we’ll usually be doing, it pops up a sheet to insist that we deal with the unversioned files before proceeding; nice safety net, that. Versions; displays all unversioned and modified at once when Changed toggle is selected, much better; but commit just brings up the modified files, it ignores the unversioned files completely. Having run into a few instances in the past where forgetting to add a new file caused problems later on because contrary to our complacent assumptions the checkin in question wasn’t actually compilable, we’ll give Cornerstone a massive bonus for its valiant efforts to save us from our own stupidity. Finally, let’s see how we handle files we want to exclude, like Xcode’s build folders and .pbxuser files. With Cornerstone, we right-click, select ‘Ignore’, and they’re gone (once we commit, apparently the properties are a repository change). With Versions, there does not appear to be any way to set a permanent exclusion, despite the website’s claim “Working Copy Browse View: Set svn:ignore and other properties.” Well, if it’s there, it should be more obvious.
Verdict: Despite a couple minor interface quibbles, Cornerstone is definitely the better client; however, both are massive improvements over svnX. So, let us turn to cost. svnX is free and open source (although the server seems to be down presently), massive points in its favor; Versions is currently unpriced but the beta is time-limited; Cornerstone is $59 which might strike one as a little steep for a GUI front end, but hey, soon as it saves us an hour of working time it’s paid for itself, right? And there is a two-week free trial, so we’ll give it that, and when that expires, just to be completely evenhanded we’ll spend another two weeks with whatever the version of Versions (heh) is to give it a shot, and whichever ends up being more stable and workflow streamlining in practice, we’ll move to that we figure. If we end up with a conclusion that’s different than our initial impression that Cornerstone is superior enough to be worth the asking price, we’ll be sure to let you know!