In previous installments of this series, I’ve covered text editing, file management, command line and copy & paste. This time, I will tell you my experiences with version control clients. Fortunately, there’s quite a selection of good clients available for the Mac. Of course, every VCS has a decent command line client for the Mac, but there are some polished graphical tools as well. The only thing that I haven’t found (yet), is a client that integrates with the Mac OS Finder, comparable to what the TortoiseSVN client does with Windows Explorer.
Which VCS to use?
Well, that question is clearly beyond the scope of this article. For this article, I assume you are working on a project and the VCS is already chosen. I’ll focus on clients for the three most widely used VCSs nowadays: Subversion (SVN), Git and Mercurial (Hg).
Command line or GUI?
Before diving into the different possibilities, it’s good to realize that using the command line is a serious option. Most VCSs do not offer GUI clients themselves, but they all do have a command line client. I think most developers aren’t afraid of the command line. A lot of things can be done very efficiently from a command line. This also goes for version management. However, my experience is that for larger projects, nothing beats a good graphical view on the revision history. And when it comes to comparing differences between revisions, I find a graphical diff tool much easier to use. So most of the times, I end up using both the command line and a graphical tool. (Sometimes I also use the embedded versioning support of my IDE, but I’ll leave that out of the equation for this article.)
Command line clients
There is not much to say about the command line clients, apart from where to get them:
- Subversion: although it suffers from the rising popularity of distributed VCSs, a lot of existing projects are still using good old Subversion. The Apache Subversion project doesn’t provide any binary packages itself, but luckily Mac OS comes with the Subversion command line tools pre-installed. Should you want to install a specific version yourself, the SVNbinaries project on Collabnet seems to be a good resource.
- Git: Github has an excellent guide to installing Git on a Mac. After completing the instructions, you will have a working Git command line client on your mac. This client also works good, provided you know which commands to use. As with the SVN command line, the Git command line lacks a visual overview. However, I found myself using the Github website as a partial replacement for that.
- Mercurial: The Mercurial project provides binary packages for the Mac. I’ve never used it, since I haven’t yet worked on a project that uses Mercurial.
As mentioned, I still did not find any tool that integrates version control capabilities into Mac OS Finder, as good old Tortoise does for Windows Explorer. However, some excellent stand alone clients make up for that miss.
Cornerstone by Zennaware is an excellent Subversion client. One of my colleagues is a huge fan of it. He convinced me to try it, so I downloaded a 14-day trial version. I’m impressed. It’s a full-featured app that just works. And it looks gorgeous. However, there are free alternatives. So I couldn’t convince myself that I needed to pay for a client that only supports Subversion, while there are free clients that support Subversion, Git and Mercurial…
Sourcetree is created by Atlassian, the company behind Jira, Confluence and many other collaboration tools. Sourcetree is a Git, Mercurial and Subversion client in one package. It has a nice Mac-like user interface, although the interface is not as polished as Cornerstone’s interface. Branches are displayed graphically, wich is very helpful. As Git and Mercurial client, Sourcetree does an excellent job. For Subversion, the experience is somewhat different, as Subversion is not supported directly, but only by using Git or Mercurial as “man in the middle”. That means to check out a Subversion repository, Sourcetree creates a local Git or Mercurial repository. (The choice is up to you.) This has the advantage of being able to work distributed even though Subversion itself is not a distributed VCS. A disadvantage is that, if you already have checked out a project, e.g. via the command line Subversion client, you won’t be able to open it in Sourcetree. However, I think we will see more and more Git and Mercurial and less Subversion in the years to come. So I think Atlassian made the right choice with their approach to Subversion support in Sourcetree. All in all, Sourcetree is a very competent VCS client. I think it’s awesome that there’s a free client that supports the three most important VCSs!
GitX is an open source Git client for Mac OS X. It has a nice and clean GUI and seems to work okay. The history view shows the branches is a similar graphical way as Sourcetree does. According to the GitX website, that graphical display is inspired on gitk, the history viewer provided by the git project itself. I didn’t use GitX for a long time, but it seems to do a good job.
There are actually a lot more options if you are looking for a graphical VCS client on the Mac. I tried GitHub for Mac briefly, but I found the user interface to be less intuitive than the other tools I tried. There’s also Sprout, a commercial git client. I haven’t tried it. The screenshots look nice, but as said before, I don’t see a reason to buy a paid client when free alternatives seem to work fine too. There are also some good-looking, open source Mercurial clients I haven’t tried (yet): MacHg and Murky. When it comes to Subversion-only clients, there is also Versions, which competes with Cornerstone.
There are quite a few GUI VCS clients available for the Mac. It is interesting to see that for Subversion there are two competing commercial products, where for both Mercurial and Git there are several open source clients available. I found only one client that supports all three major VCSs. I like the fact that I don’t have to get used to three different user interfaces, so I’m sticking with Sourcetree for now. Do you have similar or different experiences? Did you find a Finder-integrated solution? Or do you think we don’t need that at all? Feel free to share your thoughts in the comments section below!