Last updated

BASH your SVN and Trac installation!

I’ve already discussed how to install Subversion and Trac on your Ubuntu server. In my case I have a server that manages different SVN and Trac installations for a group of developers.

Creating a new SVN repository and Trac installation every time is quite boring and “if you need to do it more than once, you should automate it”. So, that’s what I did.

The result is the following BASH script. It takes one argument, the name of the project you want to create. E.g if you wanted to create a SVN repository and trac installation for “My Project” you would run the following command:

$ ./create_dev_env my_project

The script it self looks like this:

 1#!/bin/sh
 2echo == Creating Subversion and Trac installation for $1
 3echo  = Creating SVN Repository...
 4
 5# Subversion
 6cd /var/lib/svn
 7mkdir -p /var/lib/svn/$1
 8svnadmin create /var/lib/svn/$1
 9sed s/EXAMPLE/$1/g /usr/share/trac/contrib/post-commit > /var/lib/svn/$1/hooks/post-commit
10chmod +x /var/lib/svn/$1/hooks/post-commit
11chown -R www-data:www-data /var/lib/svn/$1
12
13# Trac
14echo  = Creating Trac install...
15cd /var/lib/trac
16mkdir -p /var/lib/trac/$1
17
18echo  - Creating files
19trac-admin /var/lib/trac/$1 initenv $1 sqlite:db/trac.db svn \
20/var/lib/svn/$1 /usr/share/trac/templates
21
22echo  - Removing anonymous permissions
23trac-admin /var/lib/trac/$1 permission remove anonymous  BROWSER_VIEW
24trac-admin /var/lib/trac/$1 permission remove anonymous  CHANGESET_VIEW
25trac-admin /var/lib/trac/$1 permission remove anonymous  FILE_VIEW
26trac-admin /var/lib/trac/$1 permission remove anonymous  LOG_VIEW
27trac-admin /var/lib/trac/$1 permission remove anonymous  MILESTONE_VIEW
28trac-admin /var/lib/trac/$1 permission remove anonymous  REPORT_SQL_VIEW
29trac-admin /var/lib/trac/$1 permission remove anonymous  REPORT_VIEW
30trac-admin /var/lib/trac/$1 permission remove anonymous  ROADMAP_VIEW
31trac-admin /var/lib/trac/$1 permission remove anonymous  SEARCH_VIEW
32trac-admin /var/lib/trac/$1 permission remove anonymous  TICKET_CREATE
33trac-admin /var/lib/trac/$1 permission remove anonymous  TICKET_MODIFY
34trac-admin /var/lib/trac/$1 permission remove anonymous  TICKET_VIEW
35trac-admin /var/lib/trac/$1 permission remove anonymous  TIMELINE_VIEW
36trac-admin /var/lib/trac/$1 permission remove anonymous  WIKI_CREATE
37trac-admin /var/lib/trac/$1 permission remove anonymous  WIKI_MODIFY
38trac-admin /var/lib/trac/$1 permission remove anonymous  WIKI_VIEW
39
40echo  - Creating Trac admins
41trac-admin /var/lib/trac/$1 permission add ariejan TRAC_ADMIN
42
43chown -R www-data:www-data /var/lib/trac/$1
44
45echo
46echo == Done.

First it creates the SVN directory in /var/lib/svn/my_project and creates repository and adds the trac post-commit hook for trac integration.

Next, it creates the trac installation in /var/lib/trac/my_project and removes all the persmission the anonymous users has. (You may want to remove these lines for open source or public projects.)

And, finally, I’m added as an administrator to the project. Make sure to replace this with you own username.

Hope you find this script useful. Any improvements are welcome, please let me know.