配合Visual SVN使用Trac 0.12

尝试了好久,终于在VisualSVN上集成了Trac 0.12.

安装完毕后,记录下新建Trac Project的操作过程。

1.创建Trac Project

假设TracProject目录设置在D:\Trac,确保NETWORK SERVICE用户对其具有完全访问权限。

要新建的Project名为MSS,命令行中输入:

trac-admin d:\trac\mss initenv

直接回车表示使用sqlite数据库,询问Project名称(以后可修改)时输入项目名称:MSS,等待数秒后Trac初始化完毕。

2.集成Trac到VisualSVN的Apache服务器中

这里我用的是Trac推荐的mod_wsgi,用于集成Trac到Apache.

假设VisualSVN安装在C:\Program Files\VisualSVN Server;SVN版本库根目录设置在D:/SvnRepository

打开C:\Program Files\VisualSVN Server\conf\httpd-custom.conf

添加以下代码:

LoadModule wsgi_module bin/mod_wsgi.so
LoadModule authz_user_module bin/mod_authz_user.so

WSGIScriptAlias /trac/mss D:\Trac\mss\trac.wsgi

<Directory D:\Trac>
   WSGIApplicationGroup %{GLOBAL}
#    Order deny,allow
#    Allow from all
</Directory>

<Location '/'>
AuthType Basic
AuthName "Trac"
AuthUserFile D:/SvnRepository/htpasswd
Require valid-user
</Location>

上面用到的D:\Trac\mss\trac.wsgi脚本文件我按照Trac deploy出来的格式照抄了一份:

#!C:\Python27\python.exe
#
 -*- coding: utf-8 -*-
#
#
 Copyright (C)2008-2009 Edgewall Software
#
 Copyright (C) 2008 Noah Kantrowitz <noah@coderanger.net>
#
 All rights reserved.
#
#
 This software is licensed as described in the file COPYING, which
#
 you should have received as part of this distribution. The terms
#
 are also available at http://trac.edgewall.org/wiki/TracLicense.
#
#
 This software consists of voluntary contributions made by many
#
 individuals. For the exact contribution history, see the revision
#
 history and logs, available at http://trac.edgewall.org/log/.
#
#
 Author: Noah Kantrowitz <noah@coderanger.net>
import os

def application(environ, start_request):
    
if not 'trac.env_parent_dir' in environ:
        environ.setdefault(
'trac.env_path''d:\\trac\\mss')
    
if 'PYTHON_EGG_CACHE' in environ:                                           
        os.environ[
'PYTHON_EGG_CACHE'= environ['PYTHON_EGG_CACHE']
    
elif 'trac.env_path' in environ:
        os.environ[
'PYTHON_EGG_CACHE'= \
            os.path.join(environ[
'trac.env_path'], '.egg-cache')
    
elif 'trac.env_parent_dir' in environ:
        os.environ[
'PYTHON_EGG_CACHE'= \
            os.path.join(environ[
'trac.env_parent_dir'], '.egg-cache')
    
from trac.web.main import dispatch_request
    
return dispatch_request(environ, start_request)

 以上设置表示:

项目mss访问地址为 http://服务器地址/trac/mss;

使用visualSVN内置的用户帐号登录;

禁止匿名访问。

若需要允许匿名访问,可以把 httpd-custom.conf文件中的

<Location '/'>
AuthType Basic
AuthName 
"Trac"
AuthUserFile D:
/SvnRepository/htpasswd
Require valid-user
</Location>

 替换为

<Location /trac/mss/login>
AuthType Basic
AuthName 
"Trac MSS"
AuthUserFile D:
/SvnRepository/htpasswd
Require valid-user
</Location>

这样点击Trac登录链接时会弹出认证框要求登录。

以后若要添加新的Trac Project(如新建项目CMSCS)只需要在httpd-custom.conf再加一行:

WSGIScriptAlias /trac/cmscs D:\Trac\cmscs\trac.wsgi

然后复制一份trac.wsgi到cmscs目录中。

若项目需要单独的权限可以再添加

<Location /trac/cmscs/login>
AuthType Basic
AuthName 
"Trac CMSCS"
AuthUserFile D:
/SvnRepository/htpasswd
Require valid-user
</Location>
 

 3.设定webadmin用户

webadmin让你可以从web界面管理trac配置,从0.12版本开始内置在trac中。

我们要让指定用户具有webadmin权限。

命令行输入:

trac-admin d:\trac\mss
permission add xwing TRAC_ADMIN
permission list xwing

其中用户名xwing需要在visualSVN中有对应用户。

4.关联SVN版本库 

从Trac0.12版本支持一个Project关联多个SVN版本库。

假设VisualSVN版本库根目录位于 D:\SvnRepository,事先已经为项目MSS建立好一个SVN版本库,位于D:\SvnRepository\MSS

有两种方式可以添加SVN版本库到Trac,这里使用修改Trac.ini的方式。

 打开d:\trac\mss\conf\trac.ini

添加如下内容:

[repositories]
mss.dir 
= D:/SvnRepository/MSS
mss.description 
= MSS
mss.type 
= svn
mss.url 
= http://服务器地址/svn/MSS
.alias 
= mss
.hidden 
= true

保存之后,刷新页面即可看到浏览源码菜单。并且mss版本库被设置为默认值。

若要添加多个版本库,可以修改[repositories]配置信息为:

[repositories]
mss.dir 
= D:/SvnRepository/mss
mss.description 
= MSS
mss.type 
= svn
mss.url 
= http://服务器地址/svn/mss
cmscs.dir 
= D:/SvnRepository/cmscs
cmscs.description 
= CMSCS
cmscs.type 
= svn
cmscs.url 
= 
.alias 
= mss
.hidden 
= false

注意如果trac.ini中有中文的话,需要保存为没有BOM的UTF-8格式。

在trac.ini中配置SVN版本库后可以在webadmin的管理面板中查看,但是不能修改。

svn版本库配置完毕后需要重新同步Trac缓存。

输入以下命令:

trac-admin d:\trac\mss repository resync "mss"
trac-admin d:\trac\mss repository resync "cmscs"

 分别重新同步添加的2个SVN版本库。

或者直接执行命令: 

trac-admin d:\trac\mss repository resync "*"

 同步所有SVN版本库。

5.同步SVN版本库

 从Trac0.12开始,需要在SVN服务添加post-commit hooks来显式进行同步。

 在VisualSVN的MSS版本库节点上右键菜单选择属性,弹出对话框中选择Hooks标签页

双击post-commit hook,在对话框中输入:

 
trac-admin d:\trac\mss changeset added "mss" "%1" "%2"
 

双击 Post-revision property change hook,在对话框中输入:

trac-admin d:\trac\mss changeset modified "%1" "%2"

 这样每次提交的时候会通知trac进行版本库同步操作。

 在trac.ini中[components]段添加:

tracopt.ticket.commit_updater.= enabled

 这将允许通过SVN提交信息来更新任务单。

例如:

Refs #123 将引用任务单#123
Fixes #123 将引用并把任务单#123状态修改为closed

posted @ 2011-04-25 00:36  xwing  阅读(3701)  评论(0编辑  收藏  举报