SCM Example Trac - ArchWiki

# SCM Example Trac

From ArchWiki

This article or section is out of date.

Reason: Not updated for over 3 years, trac is at 1.0.5 as of September 2015 (Discuss in Talk:SCM Example Trac#)

The HOWTO teaches you to setup multi-project Trac/Subversion for a private and trusted environment (ex: a development team).

Updated for Trac 0.11

## Basic Environment

Network
  URL: http://scm.example.com
  Subversion URL: http://scm.example.com/svn/MY_PROJECT
  Trac URL: http://scm.example.com/trac/MY_PROJECT

Database
  PostgreSQL, with trust authentication method

Filesystem
  Configuration files are in `/mnt/rpo/conf`
  Subversion repositories is in `/mnt/rpo/svn`
  Trac project files is in `/mnt/rpo/trac`

## Preparation

### Required Packages

Install the following packages:

- apache
- mod_python (AUR package)
- postgresql
- pypgsql
- python2-psycopg2 / python-psycopg2 (depends on python version)
- setuptools
- subversion
- trac

### Post-Install Steps

#### Disable connection pooling

Edit /usr/lib/python2.5/site-packages/trac/db/postgres_backend.py:

     class PostgreSQLConnection
       ......
       poolable = False   # Change this line

#### Install webadmin plugin

This is no longer needed, starting with version 0.11 it has been incorporated into the core system

     svn co http://svn.edgewall.com/repos/trac/sandbox/webadmin
     cd webadmin
     python setup.py bdist_egg
     easy_install -Z dist/*.egg

## Setup Basic Environment

Create the directories:

     mkdir -p /mnt/rpo/conf
     mkdir -p /mnt/rpo/svn
     mkdir -p /mnt/rpo/trac

### Set permissions

The user account under which the web server runs will require write permissions to the environment directory and all the files inside. With the web server running as user http and group http, enter:

     chown -R http.http /mnt/rpo

### Create User List

Create a new list and add initial user:

     htdigest -c /mnt/rpo/conf/svn-user svnrepos FIRST_USER

To add other users:

     htdigest /mnt/rpo/conf/svn-user svnrepos OTHER_USER

You can edit the svn-user file to remove or rename users

### Create Database

Create the trac user and the database:

     /etc/rc.d/postgresql start
     psql -U postgres postgres
     postgres=# CREATE USER trac;
     postgres=# CREATE DATABASE trac OWNER = trac;
     postgres=# \q

### Configure Web Server

Edit /etc/httpd/conf/httpd.conf:

     LoadModule dav_module              modules/mod_dav.so
     LoadModule dav_svn_module          modules/mod_dav_svn.so
     LoadModule python_module           modules/mod_python.so

     # Inside some virtual host if the server is not dedicated to scm
     DocumentRoot "/var/empty"
     <Location />
       Require valid-user
       AuthType Digest
       AuthName "svnrepos"
       AuthDigestDomain http://scm.example.com/
       AuthDigestProvider file
       AuthUserFile /mnt/rpo/conf/svn-user
     </Location>
     <Location /svn>
       DAV svn
       SVNParentPath /mnt/rpo/svn
       SVNPathAuthz off
     </Location>
     <Location /trac>
       SetHandler mod_python
       PythonHandler trac.web.modpython_frontend
       PythonOption TracEnvParentDir /mnt/rpo/trac
       PythonOption TracUriRoot /trac
     </Location>

## Create Projects

Each project is consisted of one subversion repository and one trac project, with independent wiki and access control.

### Create Subversion Repository

Just execute one line:

     svnadmin create /mnt/rpo/svn/MY_PROJECT

### Create Trac Project

- Initialize project dir:

     trac-admin /mnt/rpo/trac/MY_PROJECT initenv

  Database connection string: `postgres://trac:password@localhost/trac?schema=MY_PROJECT`
    (each project must be given an unique schema; no need to create the schemas first)

- Grant admin permission to all logon users:

     trac-admin /mnt/rpo/trac/MY_PROJECT permission add authenticated TRAC_ADMIN

#### Modify the /mnt/rpo/trac/MY_PROJECT/conf/trac.ini file

- Change repository_type to svn
- Change repository_path to /mnt/rpo/svn/MY_PROJECT
- Change default_charset to utf-8 or other encodings.

- Allow web admin (http://scm.example.com/trac/MY_PROJECT/admin):

    echo -e "[components]\nwebadmin.* = enabled" >> /mnt/rpo/trac/MY_PROJECT/conf/trac.ini

Category:

- Version Control System

Hidden category:

- Pages or sections flagged with Template:Out of date