Configure password based subversion access via http for multiple users

Given the tight timeline to configure subversion with httpd access having multiple users, I found that it’s not a big deal. Although, as there’s excellent reference available online for subversion, this quick howto will be helpful to point out just the essential statements.

What I want:
A subversion server having multiple repository in /svn directory and accessible through http url like http://svn.example.com. You can not browse svn repositories without supplying a valid username/password. All users have read only access to all repositories while only one user ‘svnadmin’ have read/write (commit,update etc.) access to svn.

QuickFix: ViewVC ImportError: No module named svn error

Recently I was in need to update a old subversion server to latest one in a CentOS 5.2 box. I removed the older rpms and compiled subversion from latest source. Everything seems fine except ViewVC which is used to browse svn repositories.

Following error was occurring:

An Exception Has Occurred
Python Traceback
 
Traceback (most recent call last):
  File "/usr/local/viewvc-1.1/lib/viewvc.py", line 4065, in main
    request.run_viewvc()
  File "/usr/local/viewvc-1.1/lib/viewvc.py", line 403, in run_viewvc
    self.view_func(self)
  File "/usr/local/viewvc-1.1/lib/viewvc.py", line 1662, in view_roots
    allroots = list_roots(request)
  File "/usr/local/viewvc-1.1/lib/viewvc.py", line 3922, in list_roots
    cfg.utilities, cfg.options.svn_config_dir)
  File "/usr/local/viewvc-1.1/lib/vclib/svn/__init__.py", line 53, in SubversionRepository
    import svn_repos
  File "/usr/local/viewvc-1.1/lib/vclib/svn/svn_repos.py", line 25, in ?
    from svn import fs, repos, core, client, delta
ImportError: No module named svn

Solution: You need to install python bindings for svn and may also need to install python-devel and python-subversion.

Step 1: Check whether SWIG library is installed in your system or not (most distribution already have):

$ rpm -qa | grep -i swig
swig-1.3.29-2.el5

Fix subversion/svn child exit signal segmentation fault error in Apache

When running subversion with apache, how good config you’d done, you may still found that your svn repos are not accessible through http:// or https:// and most probably you’ll find this error in your apache error logs:

child pid 6485 exit signal Segmentation fault (11)

In my CentOS 5.2 box with httpd 2.2.3 and subversion 1.6.1, this error caused enough headache for me and claimed long time before I was able to find out the root cause. The problem is caused by collision of apr and apu utilities which are installed by both subversion and Apache. These packages are required to access svn via apache. The subversion-deps package contains apr and apr-util version 0.9.x, but apache 2.2.x uses apr and apr-util 1.2.x, and subversion and apache must be using the same version of apr and apr-util, else things can result in above error.

Download, install and configure ViewVC for Subversion

ViewVC is a Subversion repository browser software having many useful features. You need python and a web browser to run it. If you are maintaining a Subversion server, you should install it to view repositories, files, branches, directories, versions or comparison between versions.

Step 1. Download and install
Get the latest version of viewvc from here, when writing of this article the latest version was 1.2-dev. I’m using the development branch, you can use more stable. Untar it and start installation:

$ tar xzf viewvc-1.2-dev.tar.gz
$ cd viewvc-1.2-dev
$ ./viewvc-install

Step 2. Installation
Answer simple questions. Default choice is okay for normal operation.