尝试了好久,终于在VisualSVN上集成了Trac 0.12.
安装完毕后,记录下新建Trac Project的操作过程。
1.创建Trac Project
假设TracProject目录设置在D:\Trac,确保NETWORK SERVICE用户对其具有完全访问权限。
要新建的Project名为MSS,命令行中输入:
直接回车表示使用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 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出来的格式照抄了一份:
# -*- 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文件中的
AuthType Basic
AuthName "Trac"
AuthUserFile D:/SvnRepository/htpasswd
Require valid-user
</Location>
替换为
AuthType Basic
AuthName "Trac MSS"
AuthUserFile D:/SvnRepository/htpasswd
Require valid-user
</Location>
这样点击Trac登录链接时会弹出认证框要求登录。
以后若要添加新的Trac Project(如新建项目CMSCS)只需要在httpd-custom.conf再加一行:
然后复制一份trac.wsgi到cmscs目录中。
若项目需要单独的权限可以再添加
AuthType Basic
AuthName "Trac CMSCS"
AuthUserFile D:/SvnRepository/htpasswd
Require valid-user
</Location>
3.设定webadmin用户
webadmin让你可以从web界面管理trac配置,从0.12版本开始内置在trac中。
我们要让指定用户具有webadmin权限。
命令行输入:
permission add xwing TRAC_ADMIN
permission list xwing
其中用户名xwing需要在visualSVN中有对应用户。
4.关联SVN版本库
假设VisualSVN版本库根目录位于 D:\SvnRepository,事先已经为项目MSS建立好一个SVN版本库,位于D:\SvnRepository\MSS
有两种方式可以添加SVN版本库到Trac,这里使用修改Trac.ini的方式。
打开d:\trac\mss\conf\trac.ini
添加如下内容:
mss.dir = D:/SvnRepository/MSS
mss.description = MSS
mss.type = svn
mss.url = http://服务器地址/svn/MSS
.alias = mss
.hidden = true
保存之后,刷新页面即可看到浏览源码菜单。并且mss版本库被设置为默认值。
若要添加多个版本库,可以修改[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缓存。
输入以下命令:
分别重新同步添加的2个SVN版本库。
或者直接执行命令:
同步所有SVN版本库。
5.同步SVN版本库
从Trac0.12开始,需要在SVN服务添加post-commit hooks来显式进行同步。
在VisualSVN的MSS版本库节点上右键菜单选择属性,弹出对话框中选择Hooks标签页
双击post-commit hook,在对话框中输入:
双击 Post-revision property change hook,在对话框中输入:
这样每次提交的时候会通知trac进行版本库同步操作。
在trac.ini中[components]段添加:
这将允许通过SVN提交信息来更新任务单。
例如: