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.
First of all we need to install the required packages:
apt-get install subversion libapache2-svn
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
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:
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:
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.