jaz303 / repo-man

Apache/SVN/DAV config file generator for sites with multiple repository roots

This URL has Read+Write access

jaz303 (author)
Sat Nov 15 17:53:24 -0800 2008
commit  3d508d3fdacd0292a45a15561334c8c4bec14026
tree    8e4f79a1ab4e4b0ec42e7e66e99c52bf9f48df19
parent  4a0a6989bee80456e2ea297e8584b5a886e1f74a
name age message
file README.markdown Loading commit data...
directory bin/
file repo-man.gemspec
README.markdown

repo-man

(c) 2008 Jason Frame [jason@onehackoranother.com]

What is it?

One of the most tedious things about hosting Subversion repositories over HTTP is that staying organised requires frequent editing of your Apache configuration. At work we use a directory structure similar to that show below (repositories are denoted by [R]):

/
  repo/
    internal/
      project-1/ [R]
      project-2/ [R]
      project-/3 [R]
    client/
      client-1/
        project-4/ [R]
        project-5/ [R]
      client-2/
        project-6/ [R]
        project-7/ [R]

The repository roots in the example above are /repo/{internal,client/{client-1,client-2}}, and each requires its own <Location> block and SVNParentPath directive within your httpd.conf. Access control configuration may also be required. As the number of repository roots increases, maintenance becomes increasingly depressing.

Enter repo-man. It's a (very) simple Ruby tool capable of generating Apache/SVN config fragments for multiple repository roots.

Installation

sudo gem install jaz303-repo-man

Usage

repo-man path-to-your-repository-root

This will spit out Apache configuration code suitable for pasting or dynamic inclusion into a VirtualHost block. The path you supply is assumed to correspond to the target virtual host's DocumentRoot and the repository locations will be normalised accordingly.

If any of your repositories has specific access control requirements put them in a file called access in the corresponding root and repo-man will import this using the AuthzSVNAccessFile directive. The format of this file is explained at http://svnbook.red-bean.com/en/1.1/ch06s04.html, about 2/3 of the way down.