1
Trac 插件开发简介
Trac 的增进方法
金山软件 廖杰
[email protected]
2
目录
a.Trac 增进
b.Trac 插件开发
c.Trac 定制系统
4
Trac 简介
• Trac 是什么– 最轻量级别的基于 Web 的软件项目管理环境
– 背景 : Trac 0.12 dev, 支持 i18n
• 干净的 Trac 能做什么– ticket
– wiki
– 版本系统
– 邮件提醒
5
为什么要对 Trac 进行增进
• 用户环境需求
• 特殊功能
• 系统间互动
• 修正缺陷
• 应用集成
6
Trac 增进的方法
• 修改配置 , 调整 Trac 参数
• 安装第三方插件 , 扩展 Trac 功能
• 自己开发插件
• 对 Trac 打补丁
7
调整 Trac 的参数
• 基本配置 : – 通过 Admin 界面
– 通过 trac-admin 命令行
• 特殊配置
–修改 trac.ini– 定制模板文件
8
安装第三方插件
• 插件大本营– http://trac-hacks.org– 超过 500 个项目
– 分类• 插件• 宏• 主题• 脚本• 补丁• 应用集成
9
自己开发插件
• 扩展 Trac 某方面的功能– 插件
– 宏
– 主题
– 脚本
10
对 Trac 打补丁
• Trac 内置功能与需求冲突
• Trac 本身缺陷
• Trac 暂时不实现的功能
12
Trac 插件开发环境
• 可运行的 Trac 环境
• Python
• Subversion
• easy_install
• virtualenv( 可选 )
13
快速插件模板
• http://trac-hacks.org/wiki/TracQuickPluginTemplateScript
• 使用 paste.script模板
• 可即刻部署
14
插件部署
• pyton egg 部署
–setuptools 0.6c9– python setup.py bdist_egg
–cp dist/*.egg ../test/plugins• 部署方式
–全局
–本地
15
Trac 插件系统
• Since Trac 0.9
• Python 语言
• 基于 Trac 组件结构
16
Trac 组件结构
• Trac core 实现了必须的组件核心
• Trac 的内置的模块都是组件– wiki
– ticket
– 版本系统
• 插件与内置模块是同一级别– 可使用插件替换内置模块
– 可拆卸
17
Trac 组件结构
• ExtensionPoint– 对外接口
– 其他组件可以扩展此接口 : plugin
18
Trac 组件结构
• 组件– 提供特定功能的对象
• 组件是 singleton– 用于提供功能
– 不作为实体使用
19
Trac 组件结构
• 每个组件都有内置如下变量– env: 代表 trac 环境实例
– config: trac 配置
– log: trac 日志
20
Trac 组件结构
• trac.core
21
演示 : HelloWorld
22
调试
• tracd– tracd -r --port 8000 test
• log– self.env.log.debug
• 集成 Eclipse+PyDev 调试
23
Trac 插件开发相关
• 模板系统 : genshi
• 前端 : jquery
• SQL 数据库 : Trac Data Models
25
Trac 定制系统
• 基础配置
• 定制字段
• 定制工作流
• 复杂报表
• 选择主题
• 选择已有插件
• 开发定制插件
26
参考
• http://trac.edgewall.org/wiki/TracDev
• http://trac-hacks.org/
• http://trac-hacks.org/wiki/richard