SVN Smackdown! Cornerstone v. Versions

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!

Alex | August 6, 2008
  • Rob August 6, 2008 at 9:48 am
    I've been using the foundation version of for a while. It's "ok", but I'm curious to check out Cornerstone.
  • Alex August 6, 2008 at 10:29 am
    Yeah, I didn't even bother installing SmartSVN -- far as I'm concerned the best possible Java app is going to grate on me way more than even a mediocre native app. I program Macs because I *like* the Mac way!
  • Andy Dent September 7, 2008 at 10:41 pm
    G'day Alex On the web-dev mailing list you said "...I never bothered to proceed to the evenhanded trial of both I mentioned, because by the time Cornerstone's trial was up I'd decided that the way it lets me know that I forgot to properly designate what to do with files newly added to the repository is a feature that I can't live without from now on. People with perfect memories may not consider that a uniquely compelling feature ... but I do." Did you mean files newly added to the working copy? Your comment sounded important but didn't make sense to me. Your enthusiasm did, however, prompt me to give Cornerstone a good look despite the price! regards from DownUnder Andy
  • Paul September 9, 2008 at 10:31 pm
    Have you checked out Zigversion ?
  • Alex Curylo September 10, 2008 at 6:07 pm
    Hi there Andy - What I meant is that when I'm in the middle of doing something new, I generally neglect to add newly created files to the repository immediately. And fairly frequently, when I do get around to checking in I overlook something somewhere, so that what I check in doesn't actually compile. Cornerstone insists that I take care of all new files before checking in. I did that twice in the two week trial -- that was enough to convince me it was worth paying for!
  • Bill October 9, 2008 at 5:36 am
    Cornerstone forcing me to take care of new files, is now my permanent way of adding anything to the repo. Why would I hunt down each and every file to svn:add, when Cornerstone does that for me? The rest of the app is pretty handy as well.
  • Jade Ohlhauser November 7, 2008 at 10:17 pm
    I've updated my comparison with Cornerstone 1.1 and Versions beta 9 and now I prefer Cornerstone. cheers, Jade
  • Mark Lindner November 19, 2008 at 1:19 am
    I've taken a look at the latest Cornerstone and Versions. They look good - at the first glance. At the second glance they are blenders. I can't even get them to work with my https server (client certificate) - they just refuse to work with a stupid error message don't helping me further. OK, I then tried it with a simpler authenticated working copy which works. But when I looked at the context menu or menu bar I needed to laugh. They just can scratch the surface of the Subversions features. I then took a look at SmartSVN Professional (I don't tried their limited version). Well, it does not look 100% like a native Mac application - just 95%, but the features are absolutely awesome and the workflows very well-though. I could get my working copies to work with it within half a minute (mostly caused by my slow connection). SmartSVN shows the working copy content much faster than Cornerstone and Versions did. SmartSVN shows me all latest changes in the repository - just by taking at the lower right part. SmartSVN allows me to work with change sets, SmartSVN let me see which revisions are not merged - and many more goodies I can't remember. I'm blown away - and found *my* favorite in SmartSVN Professional (thanks, Rob, for the hint). I'm going to ask my boss to order copies for our whole team - it's more than worth the money. Summary: Cornerstone and Versions (in their current versions) might be good enough for people who just have to perform an update in the morning and a commit in the evening. For real business usage, we prefer SmartSVN Professional - even if it does not look as well as the Mac native clients.
  • scratch and dent January 22, 2009 at 5:18 am
    Thank you ...
  • David Hamilton April 8, 2009 at 7:57 am
    Re: Your comments on a standalone difference tool. Changes - - has recently been updated. You can configure Cornerstone to use it and it also integrates with Coda's built-in SVN support, allowing a quick version diff against the SVN history. As a difference app, it at least has the advantage over FileMerge of having a two-pane display, but it does feel like a Version 1 application in a way that, say, Cornerstone or Coda do not. It supports text differences and the Coda plug-in does not seem to allow comparison between the working copy and latest from repository.
  • Alex April 8, 2009 at 8:44 am
    Hey, thanks for the pointer David. I'll definitely be giving that a try next time the occasion arises!
  • Tonio Loewald July 14, 2009 at 12:05 am
    For a really nice difference tool, try TextWrangler (free from Barebones). It does a very nice job and it's a pretty decent text editor to boot.
  • Bob September 16, 2010 at 12:25 pm
    Cornerstone had what I consider a fatal flaw; I could not find a way to smoothly select ALMOST all of files in the entire tree that I wanted to commit, with the ability to opt out of just a few. More to the point, Cornerstone should not roadblock the process of committing lots of files simply because there is ONE conflict somewhere. It should roadblock you at the very end, and let you opt out of only those files that are conflicted. Quite unacceptable. My trial is over, but I'd really like to make the devs aware of this shortcomng.
  • Jean-Michel Decombe November 1, 2010 at 3:22 pm
    I have been unable to access our secure repositories with Cornerstone, which requires specifying the location of a certificate file. It works with SmartSVN. I sent an email to Cornerstone and I have yet to get a reply. SmartSVN is not as pretty but it gets the job done. Until Cornerstone does (like most Mac people, I would prefer a pretty UI), I will stick with SmartSVN.
  • Matt Young January 24, 2011 at 2:11 pm
    I originally bought versions under the impression there would be merging and branching. I loved the original but as time dragged on (what seems like 2 years) all the asked for features never happened. Meanwhile along comes Cornerstone giving me what I wanted all along. So I feel like I paid twice for the same app... wish I had never bought versions now and pretty much (after many attempts to try otherwise) consider it DEAD. Versions is over, late to a game it was early to, put a bullet in it and call it quits so I don't have to read another cornerstone vs. versions smackdown. Thanks...
    • Daniel Zander January 25, 2013 at 3:25 am
      same here... :(

Leave a Reply