SCPlugin – Subversion for the rest of OS X!
I’ve just pushed out a new build of SCPlugin, the Mac OS X “Finder” plug-in for Subversion. This one includes the new release of Subversion 1.6.0. You can learn more about the new stuff in Subversion 1.6.0 from their release notes. Good stuff!
You can also get an easy-to-install command-line build of Subversion 1.6.0 for your Mac from the CollabNet community. Which brings up an interesting question that might deserve some extra words: why are there so many versions available?
As you may know, the Subversion community jealously guards compatibility between clients and servers. As a result, every Subversion client ever released works with every Subversion server ever released. That’s pretty cool! Granted, there are some features, and some performance enhancements, that you only get if both ends are upgraded, but you always get at least the full feature set of whichever end is at the lowest rev. And remarkably often, you get something better even than that. This is seriously sweet work, and demonstrates just how dedicated the Subversion developer community is to you, the user of SVN.
None the less, and despite best efforts, and really not entirely their fault, and a couple other disclaimers, the compatibility story between mixed versions at the client end is not quite so good. While some versions of client tools can be intermixed freely, the only real guarantee is that you can always upgrade your client software without losing the use of your working copies. There’s no corresponding guarantee that you can downgrade. Which sounds reasonable enough–why would you downgrade???–until you stop to think about having multiple clients on the same machine. Such as, say,
- CollabNet Subversion
- the built-in SVN (available in OS X 10.5)
Now we see a problem: each of those is upgraded in a different way, so keeping them in sync might mean upgrading some for no reason other than to match the others.
This gets more complicated. There are a lot of Subversion clients for OS X. A lot. Some, like SCPlugin and Xcode, provide their own built-in copy of Subversion. Some, like CollabNet Subversion, fink, and MacPorts, offer full replacements for the Apple-supplied one. Others, like svnX, use the Apple-provided one (or, can be configured to use one of the full replacements). In such a world, it’s far, far too easy to get in over your head, and suddenly your favorite tool may stop working, just because you were fiddling with something you don’t really care about!
The Subversion community understands the problem. Among their efforts to keep things under control is a script they provide, called change-svn-wc-format.py. Basically, whenever you find that one of your tools complains that it’s “too old,” you can use the script to down-rev your working copy for its benefit. Understand that the moment you use a newer tool, it will silently up-rev the working copy again. If you’re mixing tools, you may have to get real real friendly with this script!
To help a bit more, SCPlugin has done several things:
First, we bundle this script with every SCPlugin install. If you have SCPlugin, you have the script (in /usr/local/bin/). And of course, if you have SCPlugin, you have a Mac, and if you have a Mac, you have Python, which you need in order to run the script.
Second, when SCPlugin happens to bump into that “too old” problem, it doesn’t just complain about its aching joints, it also tells you about this script, where to find it, how to use it, and what voluntary organizations exist to help you recover afterwards. All in one handy alert.
Third, we have begun a wiki page to track the various combinations and configurations. Go check it out, preferably before you get into trouble. It includes guidance on which versions of what go with which versions of what else, and how to avoid shooting your own foot off. In the nature of things, the page can’t guarantee to be complete, nor to remain at all times current, but it’s a wiki: we can all help expand and update it. So hopefully, it’ll always be at least useful.
Filed under: Subversion | 1 Comment