Saturday, December 20, 2008

Using Subversion from Xcode 3.1.1

I started using the integrated Subversion SCM support in Xcode today. I've been working through some iPhone development examples from the Beginning iPhone Development book (the grapefruit book). I've been using the command line client and SmartSVN on my Mac up until now. Well, I found out that both the command line client and my SmartSVN client are both version 1.5.x and that the built-in support within Xcode is still at version 1.4.x. The working copies for a 1.5.x client won't work with the older client support that Xcode has linked into its executable. Therefore, if you plan on using Xcode's Subversion support, use only Xcode to interact with that working copy. A 1.5.x client will silently update the metadata in the .svn directories if used against a 1.4.x-based working copy, so be very careful with inadvertantly dropping down to the command line to do some SVN work. You'll most likely render your working copy unusable within Xcode if you do. Here's hoping that Apple will update Xcode and link it against a 1.5.x SVN client library.

Other than that little gotcha, the Subversion support within Xcode is pretty good. I think I prefer how the Java IDEs have it implemented (Eclipse and IntelliJ IDEA). Those tools make the SCM interactions much more seamless. In Xcode, it seems kinda off to the side. I'd really like key mappings for Commit Entire Project... and Update Entire Project. I'll have to look into that and see if that's possible.


  1. If you haven't already found out how to do it, you can add key bindings yourself in Xcode. Go to Preferences->Key Bindings, and then look for the menu option you want to add a binding for.

  2. Thanks Adam for the tip. I'll definitely look into this.