I’ve been using Zennaware’s Cornerstone for Mac as my primary Subversion GUI. The interface is much better than anything I’ve found for the features it has. (It’s only real shortcoming is that it doesn’t have support for branching and merging, so I occasionally need to use SmartSVN when it comes time for working with branches.)
I had a need today to work with some open source code that has its own SVN repository so I decided to give Cornerstone’s SVN Externals Definitions feature a try. If you aren’t familiar SVN Externals they allow you to reference an external repository in your own (or even just have subdirectories reference different locations in the same repository.) This is perfect for if you are using open source code as part of your project and want to keep up to date with the latest code in that project or just reference a particular revision from that project. If you were to put the code in your repository directly it could be a huge hassle to update it in the future.
Adding an externals property in Cornerstone wasn’t obvious to me at first:
- Select a directory in your repository
- In the File menu choose Open Externals for “directory” (or hit Shift+Command+X)
- Click the + to add a definition
- In the Check out to box enter the path in your repository to check out the external code. This path is relative to the folder you selected in Step 1
- In the Check out from box enter the path of the external repository code
- For Revision keep it at HEAD if you want it to reference the latest revision in that branch. If you want a specific revision you can specify it or click the tiny icon at the right of the input box and it will download a revision log for you to select from.
- Select File then Save (or Command+S) to save the externals property
- Commit the property change to your repository
- Update your repository. The external files will be pulled automatically
- That’s it!
Here’s an example of what my screen looked like when I was putting the JWPlayer source code as an external in my repository:
If you want to see the files of externals in your file list in Cornerstone select Show Contents of Externals from the File menu.