On Windows, TortoiseSVN [1] is the daddy, no question. On the Mac there is nothing as simple and integrated, but there is a fair choice of tools. Which GUI clients for Subversion (SVN) are worth checking out and why?
Having been disappointed with all of them for one reason or another (mainly because they're horrible to use), I settled on the command line tools for ages. I was therefore delighted to find one that didn't make me want to stick pins in my eyes. Versions [1] is a new SVN client now in Beta and is the first one to offer proper Mac OS X look and feel.
WARNING - Beta 5 converts your working copies to 1.5 format, and earlier versions of the SVN command line client tools cannot work with them after 1.5 has touched them. But it is easy to update the client tools to 1.5. As of 20080811, Beta 6 now supports both 1.4 and 1.5.
[I have no connection with the company or product.]
EDIT - Cornerstone [2] does look good... I am happy with Versions for now, and will probably pay for it when it launches. The main loss for me is the built in diff-window in Cornerstone - that's nice - but the clunky management of working copies separately from repositories is something I found really bad with things like svnX and I think that's a clear win for Versions.
Diffing is so important that every developer should have a good tool. On Windows, we settled on the free WinMerge [3], but on the Mac I rely totally on the awesome and free TextWrangler [4]; Versions automatically selected it to use for doing comparisons, so I am happy as a hog with them working together.
The Ohlhauser review is really useful - thanks for linking that. He's also posted a follow-up [5] which is also worth reading.
I'm really glad there are now two really good tools available; SmartSVN [6], svnX [7] and ZigVersion were all good efforts but all far short of the excellent standard set by TortoiseSVN [8] on Windows.
UPDATE, JUNE 2011: Following the purchase of the Sofa team by Facebook, the future of VersionsApp is a little unclear. It will continue, but I'm not sure who will be maintaining it now. In other news, it still lacks built-in support for merging, still the biggest headache for many SVN users, I believe. But Cornerstone 2 supports merging and branching in the GUI now, so I am currently downloading that to evaluate it.
[1] http://www.versionsapp.comI wrote the comparison that John Siracusa linked to in his answer. I've since updated it and added my thoughts on other Mac SVN clients.
Cornerstone vs. Versions, Again [1]
I choose Cornerstone [2] over Versions, SmartSVN, Diffly, svnX, and the SVN functionality in the editors I use, Aptana, Coda, and Textmate. That comparison has all the details, but here's the summary:
[1] http://jadeohlhauser.com/2008/c_vs_v/I choose Cornerstone for its inline content viewer, superior commit, and better ability to manage multiple working copies.
Reading this now in 2011 (!) ... I enjoyed using Tortoise in the days when the company I work for did not have a proper Mac for me to use for my dev work. I loved using Tortoise, still do, and the version for Mac is far from comparable (can someone with lots of time on their hands update that code?). I suffered through subversive on Eclipse, which I didn't mind but why use it when the CLI is so much better to begin with? It wasn't much of an alternative for me. Regardless, I did (ultimately) find a great SVN client and a great DIFF/Merge tool to use for Mac OSX:
For SVN: SmartSVN (free basic edition) was the answer for me, intuitive.
For Diff: DiffMerge (free) is a great and easy to use solution.
As well as Versions (mentioned previously) there is also another commercial offering called Cornerstone [1].
I've used Versions (beta) a bit, and had a look at Cornerstone. Both of them offer a much more "Mac-like" experience than the others, like svnX and so on.
[1] http://www.zennaware.com/cornerstone/If you use Eclipse for programming, Subclipse [1] is a great addition for it. Otherwise, I always find the GUI programs lacking and fall back to the command line version.
[1] http://subclipse.tigris.org/svnX [1] is nice, although I prefer to use the command line.
[1] http://www.lachoseinteractive.net/en/community/subversion/svnx/features/BBEdit [1] has good Subversion integration. Of course, it works better if you're already using it as your code editor. What makes it especially nice is the file comparison tool. In my opinion BBEdit is much better than FileMerge or TextMate for diffing files.
If I'm in Xcode, I tend to just use its built-in support. It's not spectacular, but it works fine for normal updates/commits/reverts. The same is true for TextMate's SVN bundle.
For more involved things I tend to use the command line, although I have been playing with Versions [2] for the last few days. I think I like it (especially since it can use the BBEdit file comparison tool automatically). I'm reluctant to commit to it, though, until they decide how much it's going to cost.
[1] http://www.barebones.com/products/bbedit/I tried SCPlugin, and it was tantalizingly close to useable. The file badging was just too buggy.
Now I use Versions. For most of my work, it is perfect. But for doing file merges I use TextWrangler [1]. One complaint I have after using a superior tool on Windows is how some features that should be integrated aren't. For example, I select a file, right-click to Show History, and see the first line of the Log Message. But there is no command to open the change list and see the rest of the log message from here. To see that, I need to go to the Timeline tab and find the change. Nevertheless, for the normal things I do, it is great.
[1] http://en.wikipedia.org/wiki/TextWranglerSCPlugin [1] is probably the closest to TortoiseSVN in terms of integration with the Mac OS X Finder. Everything is managed via context menus from the Finder.
[1] http://scplugin.tigris.org/The command line is tedious on each own, but it is good with aliases! For instance, I use
alias svn-unversioned='svn status --no-ignore | grep "^[I?]" | sed s/^[I?]//'
(that I inserted in my .bashrc
) to display unversioned files. More radically, I use
alias svn-clean-wc='svn-unversioned |xargs rm -rf'
to wipe out all unversioned backup and intermediate data files that pollute the view on a local copy (use at your own risk!).
In our team, we are using syncroSVN [1] and quite happy. It's not like TortoiseSVN, but when we compare all the Mac clients (snvX, Versions, etc.) one year ago, it was the winner. It is not free. Sometimes, I take resort to the powerful shell commands too.
[1] http://www.syncrosvnclient.com/I heard Diffly [1] is pretty good. ... I am currently enamored with Versions.App [2]
[1] http://lucidmac.com/products/difflyI chose Versions and use it daily.
+1 for Versions:
I used ZigVersion for a year or so and had a few "wow" moments moving to Versions just now. So easy...
I also tried RapidSVN [1] (which was too broken to use) and the SVN client in Xcode (horrible) and BBEdit [2] (worse). ZigVersion has some frustrating bugs (eg a crash if you browse diffs before committing) and mysterious error messages.
[1] http://en.wikipedia.org/wiki/RapidSVNIf you are using an Eclipse, there is a more 'Eclipse-Approved' plugin which is Subversive [1]. Subversive aim to be the CVS [2] equivalent for the Eclipse platform with regard to SVN. I've been using it for more than six months now, and it's very stable, very easy to use (as easy as CVS at least) from within Eclipse.
For Xcode [3], I know that there is a built-in integration with Subversion, but I never used it myself... I am not working on Macs currently professionally (although I'd love to).
[1] http://www.eclipse.org/subversive/index.phpI agree with Dan, svnX is pretty good, it gets the job done. I have not yet tried Versions, but I am certainly interested in it's native Mac OS X philosophy.
I use the svn command, and the TextMate SVN bundle.
Neither Cornerstone nor Versions can handle SVN tags. I know, that's hard to swallow. I'm not talking about branching and merging, just tags.
But then, I couldn't get SmartSVN or Versions to connect to my HTTPS SVN repositories on Unfuddle. The Google group for Versions refer to this as a bug actually.
So as of now, I use a mix of Cornerstone and command line.
There is another option I didn't look into: use Eclipse with its SVN plugin or (if you're a Java developer), use IntelliJ IDEA [1]'s SVN integrated tools.
[1] http://en.wikipedia.org/wiki/IntelliJ_IDEAI use RapidSVN [1] since it runs on Windows, Mac, and Linux. It's still in it's infancy, though, IMO. It has some quirks you have to work around, but it does most of what I want. It made support easier, too, since I only had to train developers to use one program no matter what they were doing.
SCPlugin was annoying as hell. It works great on SVN working directories and slows down the Finder for everything else, especially network mounts. I couldn't stand how slow Finder had become and uninstalled it. If there were a way to make SCPlugin behave better, I might have kept it around. However, on a mac, I find that I use the command line tools primarily and only use the GUI tools when I want to do a large check-in and need the larger view and graphical diffs.
[1] http://rapidsvn.tigris.org/I prefer the TortiseSVN using a virtual machine.
I use Mercurial [1] and MacHG [2] as the GUI. MacHG is very neat and easy to use.
[1] http://mercurial.selenic.com/Maybe you are interested in my article about SVN clients for Mac OS X, Subversion Clients on Mac OS [1].
This article compares several free Subversion clients for Mac OS X.
[1] http://cloudobjects.blogspot.com/2010/10/using-subversion-on-mac-os.htmlThere are 12 interesting softwares on this page that you might want to check: http://gigaom.com/apple/12-subversion-apps-for-os-x/
Also, SCPlugin just updated a little bit ago, so if you tried it before you might want to give it another shot.
It supports both 1.4 and 1.5 repositories, as well.
Command line all the way for me, everything else just feels wrong.
I'm a big fan of the command-line SVN tool. The switches are very obvious and you know exactly what is going on at all times.
Although saying that, Cornerstone does look good, I've been using it to manage reorganization of a large project (drag and drop vs dozens of SVN move commands).
Prior to Cornerstone, I often found myself using BBEdit's SVN menu to do things like diff files or view logs
I (and others) have been so burnt by SCM [1] support in Xcode [2] that I'd never touch it again.
[1] http://en.wikipedia.org/wiki/Software_configuration_managementI like Subclipse [1] as it provides a nice abstraction on top of SVN. I like the constantly updated view of what is 'out of sync' and also the 1-step commit of new files (rather than add then commit).
[1] http://subclipse.tigris.org/I haven't found any good programs with a GUI. (I like TortoiseSVN [1] on Windows.)
For me, usual SVN usage goes around update-diff-commit cycle. Update and commit are easy to do from command line, but for diff I want a program that can display my changes for each file side-by-side before I commit, so that I don't make a mess. (I consider viewing the plain diff unfeasible :].)
There are two things I use:
With Emacs: SvnStatusMode [2] (you get a diff like this: ediff [3])
When working outside Emacs: Using FileMerge as a diff command [4]
[1] http://en.wikipedia.org/wiki/TortoiseSVNIt's been a while so you've probably discovered these already, but by now there are a couple of good GUI clients for Mac OS.
Cornerstone [1]
Versions [2]
[1] http://www.zennaware.com/cornerstone/Since Eclipse has been mentioned a couple of times, I thought I would note that MonoDevelop [1] has excellent Subversion support on the Mac. It is built right in so you do not need an external client. There is Git support built-in as well.
The behaviour is the same on all platforms (Windows, Linux, and Mac) so it is great if you move back and forth between platforms on the same project (as I do).
[1] http://monodevelop.com/