Getting Subversion under MacPorts
- Audience: Anyone and everyone
- Requires: MacPorts, Apache (for server installation)
Introduction
The most expedient way to get Subversion up and running on Mac OS X is to do it under MacPorts. There are a number of secondary components that Subversion depends upon and the MacPorts portfiles take care of the tedium of doing all this by hand.
These instructions assume you already have MacPorts installed and running.
Client-Only Installation
This is the easiest option. Simply type
sudo port install subversion
When MacPorts finishes, you can test out your installation by pulling down the actual Subversion project itself:
cd ~ mkdir Subversion cd Subversion svn checkout http://svn.collab.net/repos/svn/trunk trunk
Full (Client+Server) Installation
This option is is for people who want to host a Subversion server running under Apache. While MacPorts will take care of automatically downloading and installing Apache (the v2.x line), it’s probably better if you get Apache configured and running first. That way, if there are problems, you can figure out whether it’s with your Apache installation or with your Subversion installation. To get Apache installed, follow the Apache-specific instructions on the MAMP page. (If you know you’re going to need MySQL and PHP, you might as well get those installed and out of the way too and come back to this page when you’re ready.)
Step 1: Install Subversion
First run the following command for a client + server installation:
sudo port install subversion +mod_dav_svn
Step 2: Create initial repository and set up apache
Next, you will need to create a Subversion repository and tell Apache about it. Let’s assume we want to set up a Subversion repository directory such that the collection of hosted repositories is accessed viahttp://localhost/svn/ for each repository. We’re doing this so that we can host multiple repositories if we elect to do so. So, if we created two repositories, repos-1 and repos-2, we would reference them as http://localhost/svn/repos-1 and http://localhost/svn/repos-2, respectively. Let’s also assume that we want to host the repositories in a /svn directory. There are two key things you need to do to make all this work:
- Grant ownership of the /svn directory to the www user
- Establish the proper access controls in Apache’s httpd.conf file to connect http://localhost/svn/ URLs to the /svn directory.
First, let’s set up the /svn directory and create a repository:
cd / sudo mkdir svn cd svn sudo mkdir repos-1 sudo svnadmin create --fs-type fsfs repos-1
Next, we need to change the owner to be www:
cd / sudo chown -R www svn
Now, we need to tell Apache to activate Subversion and how to access the repository. Go to the Apache config directory:
cd /opt/local/apache2/conf/
and edit the httpd.conf file. If you are using vi,
sudo vi httpd.conf
and if you are using pico,
sudo pico httpd.conf
Navigate to the “Dynamic Shared Object (DSO) Support” section (i.e., the section that has all the “LoadModule” statements) and add the following lines at the end:
# ----- Subversion: LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so
Next, navigate your editor down to the very end of the file and add the following lines:
# # Define Subversion access # <Location /svn/> DAV svn SVNParentPath /svn SVNListParentPath on </Location>
Note that this is the world’s simplest Subversion access configuration. It is meant only to be used to help verify that your installation is working properly. You should now be able to further configure your repository hosting according to the Subversion documentation.
Note: It is important to have the trailing slash (“/”) character at the end of the directory in the Location directive. Older versions of Subversion didn’t seem to care about the trailing slash, but versions 1.3.0 and later seem be really picky about it. It becomes an issue if you need to use an access control file to control access within the repository. So it’s best to set things up correctly now, otherwise there will be great weeping and gnashing of teeth later on.
Step 3: Restart Apache and test installation
Restart Apache (sudo /opt/local/apache2/bin/apachectl -k restart) to activate your changes.
Now, you should be ready to test your installation. First, point your browser to http://localhost/svn/ . You should see a “Collection of Repositories” page with your “repos-1” repository listed in it. It will be empty, so if you click on it, it will have nothing and be at Revision 0 (go ahead and try it!). Next, go to your home directory and create a template directory to import as your first revision:
cd ~ mkdir svn-template cd svn-template mkdir trunk branches tags
Import your template directory into the “repos-1” repository using
svn import . http://localhost/svn/repos-1 -m "Initial import."
Go back to your browser and go to http://localhost/svn/repos-1/ (if you’re there already, just refresh the page). You should now see the “branches“, “tags“, and “trunk” directories listed and the repository should be at Revision 1.
That’s it. You’ve got a Subversion server running!