Subversion is a software version control system. It allows you to store files in a repository where previous versions of those files are retained when they are updated in the repository. Thus, you can return to a given revision number of a file or group of files after you've made changes to them. The most common use is with source code for software projects, where detailed information on the changes to the code can easily be logged between code revisions. Personally, I was a bit reluctant to start using Subversion because I thought it would be a hassle to checkout code and commit revisions, but after more than a year I can confidently state that I've found Subversion to be extremely useful. The purpose of this page is to provide some detail on how to setup a Subversion server on a Mac running Mac OS 10. If your machine is connected to a network and setup for remote access, these instructions will show you how to enable access to the server so you can view your project code on the web and connect to the repository remotely. If your machine is not remotely accessible, you can still use Subversion locally to store revisions of your project files. My hope is to make this easy enough for anyone with a small amount of familiarity with server software to get a Subversion repository setup and accessible in about 15 minutes! In fact, if you're planning to only use Subversion locally, you can create the directory within your home directory on your machine, which will not require the use of sudo. If you'd like to have remote access to the repository, I'd suggesting creating the repository in step 5 below. You can now save and close the file press ESC, then ' ZZ' in vi. If you see those, leave them untouched and simply uncomment the line between them. Thus, you'll need to use the two files I've compiled using the on a standard Mountain Lion install. This should provide all the necessary components to continue with the setup of the SSL certificates. These instructions are based on an old Apple Developer document that seems to have disappeared. The closest modern version I could find is. This time the Common Name and Email Address fields can be whatever you please. As in step 1, the text should be replace with the actual repository name you would like to use. That is not a typo. Again, replacing with the actual repository name. We'll need to re start the Apache web server and confirm the Subversion repository is accessible via a web browser. If there is a problem with the configuration files modified under point 2 above, the checkbox will 'uncheck' itself and you should review those files to ensure you've modified them as described. If the checkbox remains checked, the server is up and running, and ready for testing i. You can read a bit about that. In this case, you can test and start the Apache web server as directed below. As usual, you'd replace with the actual name of your repository. This must be done on the machine running the Subversion server as this first test is a test that the repository is accessible locally, but served by the Apache web server with SSL encryption. This is OK, and expected. Above, in the creation of the SSL certificate, we self-signed it. This means the certificate was signed, but not by a designated authority e. Depending on the browser, the procedure is slightly different, but do what you need to do to accept the certificate and proceed to access the site. This would be the username and password created under point 4 above. Congratulations, you have a locally accessible Subversion repository with SSL encrypted authenticated access. The web server can be restarted by typing sudo apachectl restart Beware that using sudo can do major damage to your computer if you aren't careful. If you're still having problems, try searching on Goolgle for the error messages or behavior you're seeing. There are quite a few potential pitfalls in these instructions, so unfortunately, this is the best I can do. If all goes well, you'll find you now have an externally accessible Subversion repository with SSL encrypted authenticated access! In this case, I'll assume you'll store the files in your home directory, within the subdirectory Code. Of course, you'd replace with the username used under point 4, with the actual name of the repository and with the desired directory name for storing a local copy of the files. You will likely be prompted to accept the Subversion server certificate, to which you should either reply ' t' to temporarily accept or ' p' to permanently accept it. You'll then be prompted for your password. Lastly, I expect you'll receive a warning message that the password for access to the repository can only be stored unencrypted on your machine. It is up to you whether you'd like to store the password unencrypted and not have to enter it again when accessing the repository or not store the password. You should then see the files in the repository being added as local copies, if there are any existing files. This structure is merely a suggestion, but you can read about why it is a reasonable choice. Further discussion is beyond the scope of this page. In case that is unclear, at this point we've only created these directories in the local copy of the Subversion repository and must commit the changes in order for the 'master' copy to be updated. Each time you commit you should provide a useful comment that reflects the changes made for this commit. At this point, everything should hopefully be working as expected. I would recommend having a look at some of the other general concepts and commands in Subversion at the website. If you've found any typos or things I should add to this page, feel free to send me a message at the word between 'site' and 'tutorials' in the URL of this page at gmail dot com.