
Subversion is an application used for version control, it is meant to become a replacement of CVS Concurrent Versions System. Subversion is also known as svn.
This how-to will show how to setup svn repositories accessible throught http by using apache2 and the DAV module.
This tutorial is splitted in 4 parts: install neccessary packages, create the repository structure, configure apache and create the first repository.
Neccessary packages:
First of all we need to install the required packages:
apt-get install subversion libapache2-svn
Repository structure:
The projects are going to be hosted on /var/svn/repository. We need to create to directories and give full permission to the apache user:
mkdir /var/svn
mkdir /var/svn/repository
Now that the directory exist, we need to give write access to the apache user:
chown www-data:www-data -R /var/svn/repository
chmod 770 -R /var/svn/repository
Configuring Apache:
Now, we need to modify apache svn module configuration file, edit /etc/apache2/mods-available/dav_svn.conf and make sure the following argument are properly setted up:
...
SVNParentPath /var/svn/repository
#SVNPath /var/svn/repository
.....
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
Require valid-user
...
In order to be able to track who modify the different files of the project, we need to create users. Create the first user (tester) and supply a password:
htpasswd2 -c /etc/apache2/dav_svn.passwd tester
Creating a first repository:
Get apache user access (so files and directories are created with proper rights:
su www-data
and create your first repository (example):
svnadmin create /var/svn/repository/example
import your project:
svn import /path/to/projectexample file:///var/svn/repository/example/examplev1 -m"initial import"
Now, get back to root user (Ctrl-D) and restart apache:
/etc/init.d/apache2 restart
Your project is now avalaible to the different user you will add in /etc/apache2/dav_svn.passwd .
User tester can now access the project at http://svnhostaddress/example and checkout a first copy to his computer, modify files and commit back his changes to the server.
Reference: SVN online Book.








Debian Tip
This is a very succinct tutorial that got me unstuck when trying to set up WebDAV. There are a few things I would add from my experience with installing this on Debian Sid (Unstable) using Apache 2.2. First of all, Debian's default configuration is to use virtual hosts. You can't edit the /etc/apache2/mods-available/dav_svn.conf file and enable DAV there if you are using virtual hosts. Instead, I just imported the text from that file into my site's config file (in this case, the virtual host config file in /etc/apache2/sites-available/ was named "default"). Actually, I imported the text twice: once for the NamedVirtualHost *:80 section and once for the NamedVirtualHost *:443 section so that it would work both for http and https sessions. Then I configured the file there to point to the proper places. Of course, this assumes that you have correctly installed and configured SSL.
Another thing that had me stuck for a while is that if you use the SVNParentPath directive, you can't pull up the svn directory in your browser by going to the svn root (i.e., http://localhost/svn assuming that your svn path declared in the virtual host config file points to /svn). Whenever I tried that, I got an http error that said I'm not authorized to be in that directory. You must instead use the sub-repository URL, as in, for example, http://localhost/svn/my_repository. That solved my problem.
Here's what my "default" config file looks like:
Small Addition
Thanks for the how-to. It was pretty quick and easy to use.
An interesting addition to the installation how-to can be found at:
http://blog.andrewbeacock.com/2005/08/configuring-subversion-svn-on-linux.html
It's a small addition to the /etc/apache2/sites-[available|enabled] folders. The addition seemed to allow the mapping of the "/svn" virtual directory pop up for web-browsing.
If anyone is interested a
If anyone is interested a howto explaining how to install apache 2.2.4, svn 1.4.2 and serf 0.1.0 is available here wiki.talk360.com