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