Wednesday 3 May 2017

Installation and basic configuration of Subversion Server on Ubuntu 16.04 & 14.04 LTS

Subversion is an open source version control system. It helps you keep track of a collection of files and folders. Any time you change, add or delete a file or folder that you manage with Subversion, you commit these changes to your Subversion repository, which creates a new revision in your repository reflecting these changes. You can always go back, look at and get the contents of previous revisions.
This article will help you for step by step setup of Subversion (svn) server on Ubuntu 16.10, 16.04 & 14.04 LTS systems.
1. Install Apache

First, you need to install Apache web server to access svn server using HTTP URLs. Skip this step if you already have Apache web server on your system.

sudo apt-get update
sudo apt-get install apache2 apache2-utils
2. Install Subversion

Use the following command to install subversion packages and their dependencies. Also, install svn module for Apache libapache2-mod-svn packages on your system.
sudo apt-get install subversion libapache2-mod-svn libapache2-svn libsvn-dev
sudo a2enmod dav
sudo a2enmod dav_svn
restart apache2
sudo service apache2 restart
3. configure apache for subversion

Subversion Apache module package creates a configuration file /etc/apache2/mods-enabled/dav_svn.conf. You just need to make necessary changes to it.

Alias /svn /var/lib/svn
<Location /svn>
   DAV svn
   SVNParentPath /var/lib/svn
   AuthType Basic
   AuthName "Subversion Repository"
   AuthUserFile /etc/apache2/dav_svn.passwd
   Require valid-user    
</Location>

4. create your first SVN repository

Use following commands to create your first svn repository with name myrepo.

sudo mkdir -p /var/lib/svn/

sudo svnadmin create /var/lib/svn/myrepo

sudo chown -R www-data:www-data /var/lib/svn

sudo chmod -R 775 /var/lib/svn

5. create users for Subversion

Now create first svn user in /etc/apache2/dav_svn.passwd file. These users will use for authentication of svn repositories for checkout, commit processes.

touch  /etc/apache2/dav_svn.passwd

sudo htpasswd -cm /etc/apache2/dav_svn.passwd admin

To create additional users, use same commands by changing usernames like user1, user2 .. so on.

6. access repository in Browser

Use HTTP URLs to access your repository in the browser. It will prompt for authentication. Use login credentials created in Step 5. Change example.com with your system host name, domain name or IP address.
http://localhost/svn/myrepo/
it will ask for username and password for authentication.