SCM Example Trac (简体中文) - ArchWiki

# SCM Example Trac (简体中文)

From ArchWiki

本指南介绍如何在私人和安全的环境下架设多项目的 Trac/Subversion，例如给一个开发组假设环境。

## 基本环境

### 网络

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

### 数据库

- PostgreSQL 并且提供认证方法

### 文件系统

- 配置文件位于 `/mnt/rpo/conf`
- Subversion 源位于`/mnt/rpo/svn`
- Trac 项目目录位于 `/mnt/rpo/trac`

## 安装软件包

安装下列软件包:

- apache
- mod_python
- postgresql
- pypgsql
- setuptools
- subversion
- trac

### 禁用连接池

编辑 `/usr/lib/python2.5/site-packages/trac/db/postgres_backend.py`:

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

## 设置基本环境

创建目录:

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

### 创建用户列表

创建一个新列表并添加初始用户：

     htdigest -c /mnt/rpo/conf/scm-user scm FIRST_USER

添加其他用户：

     htdigest /mnt/rpo/conf/scm-user scm OTHER_USER

可以编辑`scm-user` 文件删除或更改用户名

### 创建数据库

创建 trac 用户和数据库：

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

### 配置Web服务器

编辑`/etc/httpd/conf/httpd.conf`:

     LoadModule dav_module              lib/apache/mod_dav.so
     LoadModule dav_svn_module          lib/apache/mod_dav_svn.so
     LoadModule python_module           lib/apache/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/scm-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>

## 创建项目

每个项目都包含一个 svn 源和一个 trac 项目，具有独立的 wiki 和访问控制。

创建 svn 源：

     svnadmin create /mnt/rpo/svn/MY_PROJECT

初始化项目目录：

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

数据库连接字串`postgres://trac:password@localhost/trac?schema=MY_PROJECT` (每个项目必须给出不同的 schema，不需要提前创建 schemas)

为所有登录用户开启管理员权限:

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

编辑 `/mnt/rpo/trac/MY_PROJECT/conf/trac.ini`：

- 将 `repository_type` 修改为 `svn`
- 将 `repository_path` 修改为 `/mnt/rpo/svn/MY_PROJECT`
- 将 `default_charset` 修改为`utf-8` 或其它编码

允许 web admin (http://scm.example.com/trac/MY_PROJECT/admin)：

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

Categories:

- 简体中文
- Version Control System (简体中文)