November 8, 2009

Mac subversion apps – Cornerstone vs Versions

Cornerstone vs Versions

Cornerstone vs Versions

I dont know how long Cornerstone has been around (actually, according to their blog it looks like the first version came out around May 2008), but i only learned about them last week (an ad in Tweetie), and immediately downloaded it.  I spend all day every day working with code stored in different Subversion repositories.  Up until now, I have been using Versions as my Subversion app of choice, and its been great.  There are a few annoying issues with Versions, and i’ve been surprised at how long they take between releases, but it was the first Subversion app for the Mac that was actually worth using.

Coming from having used Versions for a long time (I was the second ever paid customer when it came out of beta), i had – and still have – a little difficulty finding the button im looking for in Cornerstone.  Some actions are in the top toolbar, and some are down the bottom.  I often forget where each button is.  But aside from that, I have found it has a bit of an advantage over Versions…

Number of changed files badge

Changes count badge

Changes count badge

I have many local copies of repositories on my computer.  I loved the feature in Versions where it would show you a badge with the number of changed files… until I realized that was the reason my computer ground to a halt so often.  Thankfully, Cornerstone is a little more intelligent about it.  Im not sure how its done, but its like Cornerstone has hooks in the system that notifies the app when files are changed in certain directories.  In Versions, it seems to be constantly scanning for changes, but in Cornerstone, it seems to know with directories have had changes, quickly scans through those directories to find the changed files, and shows me the little badge, all very quickly, and without noticeably degrading system performance.

Logs

Versions is very slow at dealing with viewing commit logs.  It fetches the logs from the server every time i want to look at them, but Cornerstone fetches the list once and caches it… then it just fetches the updated logs (I am assuming this is how it works, it certainly appears to work this way), meaning that after the initial download of logs, browsing commit logs in Cornerstone is super fast.

Viewing diffs

Cornerstone has a built-in diff viewer which is nicer than the File Merge app included with Xcode – but you can also choose to use an external viewer if you want.  Versions doesnt have a built in diff viewer, which is not a bad thing, but i do find it handy being able to click the Compare with Base button in Cornerstone and not have to wait a few seconds to open an external app.

Timeline

Cornerstone has a timeline viewer which Versions doesnt have.  It reminds me of a gantt chart.  It adds a nice way to visually see changes over time.  Being a visual person, i like it.

Resolve

I’ve only been using Cornerstone for a week or so, and havent had a chance to use the Resolve feature yet, but im very interested to see how well it works, and how useful it is.

SSL

I use Storehouse to host my repositories (obviously), and one issue with Versions (actually I think its more of an issue with Subversion itself, I should find out) is that it has issues with wildcard SSL certificates.  Storehouse has a single SSL certificate for *.storehouseapp.com which means that all clients who use domains like client.svn.storehouseapp.com to access their repositories can use SSL.  In Versions, every time you add a repository that uses a wildcard SSL certificate like that, it alerts saying the certificate isnt valid (which it most certainly is), and you have to manually accept the certificate.  This is a common problem and other hosted Subversion services face the same issue.
When I add the repositories to Cornerstone, I didnt get any warnings about the certificate and it worked very smoothly.

I also appreciated the drop-down to select a recently added repository as more often than not, only the actual repository name needs changing when adding new ones.

Committing

When you’re committing a few files in Cornerstone, you can select the files, press Commit, then see the list of files and write the commit message (same as Versions), however, in Cornerstone, you can then select any of those files to do a list minute diff, you can untick some files you accidentally selected.
Also, while the files are being sent to the server, the whole interface isnt locked up.  In Versions, you cant do anything until the commit has finished (unless you have multiple windows open which is messy).  In Cornerstone, you can carry on sorting out the next commit in the same or any other repository while the previous commit is still being sent to the server.

Wrap-up

Cornerstone feels like it has more power than Versions, but i think Versions feels like it has a tidier interface.  I guess less buttons makes it feel easier.

I havent actually purchased Cornerstone yet, Im still running the 14-day trial (Im unsure how long the Versions trial lasts).  They both cost around US$59 (actually Cornerstone is exactly US$59, and Versions is priced at EU39 which is around US$58).
I havent yet decided which app to use as my Subversion app of choice, but i think im leaning towards Cornerstone.

Does anyone have any stories of using either Versions or Cornerstone?  I’d be very interested to hear them.

Obviously, the logos and app names are copyright of their respective owners.