100305 trac-plugin-dev-intro

26
1 Trac 插件开发简介 Trac 的增进方法 金山软件 廖杰 [email protected]

Upload: zoom-quiet

Post on 12-Nov-2014

1.276 views

Category:

Documents


3 download

DESCRIPTION

CPyUG会课总第38期~暨珠三角技术沙龙第6次http://wiki.woodpecker.org.cn/moin/ZPyUG/2010-03-14

TRANSCRIPT

1

Trac 插件开发简介

Trac 的增进方法

金山软件 廖杰

[email protected]

2

目录

a.Trac 增进

b.Trac 插件开发

c.Trac 定制系统

3

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 暂时不实现的功能

11

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

24

Trac 定制系统

25

Trac 定制系统

• 基础配置

• 定制字段

• 定制工作流

• 复杂报表

• 选择主题

• 选择已有插件

• 开发定制插件

26

参考

• http://trac.edgewall.org/wiki/TracDev

• http://trac-hacks.org/

• http://trac-hacks.org/wiki/richard