John Costanzo

Setup SVN Server

SVN (which stands for Subversion) is a version control system. So let me speak some english here for you. Lets say you make a website for a customer. When you are finished it is version 1. A month or so later the customer calls you back and wants to add a page or 2. This would then be version 2. So you upload ver 2 to replace ver 1 and the customer hates it. Oh my I did not back up ver 1 and there are many changes that happened. Well if you are using SVN you can go in and tell the code to revert back to ver 1 and then upload those files and you are a happy camper. Well with the quick explaining what the SVN is, now lets show you how to setup the server for this. I will be installing this on a Ubuntu 9.04 box. I have tested this way with versions 8.04 and 8.10. Now I am assuming that you have Apache 2 and up already installed and configured. Lets installing the app Subversion and install the apache module libapache2-svn

sudo apt-get update
sudo apt-get install subversion libapache2-svn

Now that we got that installed lets add a new group for subversion

sudo addgroup subversion

Next we make a main directory that will hold all of our SVN. You can have multiple sites or repositories as they are called for different sites or projects

sudo mkdir /home/svn

Note There is really no wrong place that you can setup the svn directory

Now we just need to make some permission changes to the directory we just made

sudo chown -R www-data:subversion /home/svn
sudo chmod -R g+rws /home/svn

Next we are going to create the SVN. For this example I will name the SVN myWebsite . Now you can name your repository pretty much anything you want.

sudo svnadmin create /home/svn/myWebsite

We now have the SVN setup but now we need to get this configure so users can now connect to this SVN. We now need to edit /etc/apache2/mods- available/dav_svn.conf and make some changes to that file. You can add the following to the end of the file

DAV svn
SVNPath /home/svn/myWebsite
AuthType Basic
AuthName "myWebsite subversion repository"
AuthUserFile /etc/subversion/passwd
Require valid-user

If you have multiple repositories you would just add another section and change myWebsite to the name of the other repo. Now lets add 2 username and passwords that can connect to the SVN.

sudo htpasswd -c /etc/subversion/passwd jcostanzo
# You are prompted for the password. Go ahead and make one up
sudo htpasswd /etc/subversion/passwd bsmith
# Notice we took out the -c This is due to the -c is a flag that creates the passwd file

Lets go ahead and finish up

sudo chown -R www-data:subversion myWebsite
sudo chmod -R g+rws myWebsite
sudo /etc/init.d/apache2 restart

That is it. You know have a working SVN server. In a later tutorial I will show you how to setup an SVN client to connect to this repositories. Below is a youtube video showing you how to do what I described above.