Updating SVN for Mac OS X

Main Thread October 4, 2012 • 2 min read

Update: The Command Line Tools for Xcode 5 include SVN 1.7.10.

I downloaded the latest version of Eclipse and Subclipse for my new work Macbook Pro. When I ran svn commands in Terminal I received some odd messages. After some confusion, I realized Subclipse checked out the repository using SVN version 1.7. Unfortunately Mac OS X Mountain Lion runs SVN version 1.6.

I could have downgraded Subclipse. However, I had already checked out several repositories. Furthermore, I liked the smaller footprint of SVN 1.7. In typical lazy developer fashion, I went with updating SVN to version 1.7 for Mac OS X.

To give due credit, the foundations of this post came from a post on Building SVN 1.7. Although I expanded on it, I encourage you to read the original post. For completeness, I outlined the full process below.

Note: To compile and install SVN 1.7 you need Xcode with the Command Line Tools installed.

Download the SVN Source

cd ~/Downloads/
curl -o subversion-latest.tar.gz http://apache.mirrors.tds.net/subversion/subversion-1.7.8.tar.gz
tar -xvf subversion-latest.tar.gz

Note: You may need to update the curl command to download the latest SVN 1.7 source.

Build and Install SVN

The default SVN install on Mac OS X uses neon. neon allows you to connect to remote SVN repositories via HTTP and HTTPS. Lines 2-7 installs neon. Line 8 builds SVN using the --with-neon configuration flag.

cd ~/Downloads/subversion-1.7.*
sh get-deps.sh neon
cd neon/
./configure --with-ssl
make
sudo make install
cd ..
./configure --prefix=/usr/local --with-neon
make
sudo make install

Using the New SVN

Your environment will still use SVN version installed with Mac OS X:

svn --version

To use the SVN version you just installed, you can update your PATH. Assuming you are using the bash shell, add or edit the following line in your ~/.bash_profile:

export PATH=/usr/local/bin:$PATH

You should now see the SVN version you installed:

svn --version

Find this interesting? Let's continue the conversation on Twitter.