kl800.com省心范文网

火龙果软件--Trac学习手册


火龙果 ? 整理 uml.org.cn

Trac 学习手册
在项目开发中,我倾向于大任务分解、小团队、迭代开发、持续交付。在管理上, 我更看重人与人的交流以及交流后的共识,提倡客户、开发人员、测试人员等面 对面的交流,让代码说话。因此,在选择项目使用的工具上,我更喜欢一些轻量 级的开发、配置和管理工具。 在项目配置和管理方面,以前也用到过很多工具。版本控制用过 VSS、 TeamSource、 CVS 和 Subversion, 项目管理、 bug 跟踪方面用过 Project、 CVSTrac 和 Trac,当然还有最基本的 Excel。 目前我做的项目基本上都是使用 Trac+Subversion 来构建的, 为什么呢?版本控 制方面,VSS 是以前用的,微软的,大而笨重,TeamSource 是 Borland 的东东, 不是很流行。剩下的就 CVS 和 Subversion 了,老实说,我用这两个东东的时间 都不长,都是免费,分布式部署比较方便,都够用,真正让我确定使用 SVN 的是 Trac。我使用 CVS 完全是因为要用 CVSTrac,一个轻量级的项目管理和错误跟踪 工具(具体可以参见 cnpack)。直到后来,我知道了 Trac,觉得这就是我需要 的项目配置和管理的平台。 具体说 Trac 对我最有用的是 Wiki、里程碑、任务管理(bug 跟踪)和集成 Subversion。 使用 wiki 我可以轻松的构建项目的网站,项目内容管理,资源链接以及信息发 布等等。里程碑使我的迭代计划更加易于管理,每个迭代(里程碑)有多少工作 量,完成了多少,还剩多少,时间节点,相关的资源一目了然。任务管理最明显 的好处就是 bug 跟踪,还可以为每个里程碑、模块分配任务,并有多种报告可以 查看,小团队管理的利器啊。集成 Subversion,可以在 Trac 网站中查看 Subversion 的资源,这样,客户和业务人员不使用 Subversion 也可以获取相应 的资源了。 Trac 和 Subversion 好处很多,但安装有点费劲,当然,对于熟手来说很容易。 我当时弄了好久才搞定 Trac,今天早晨才使用上 WebAdmin 插件。
Windows 下 Trac 的安装与基本配置 Windows 下 Trac 的安装与基本配置 Trac 是一个基于 Web 的,轻量级的项目管理工具,它使用 python 语言编写。在本 文中,将介绍 windows 下安装、集成配置一个简单的 Trac 环境,并通过浏览器访问和使用 Trac 站点。Trac 环境中,默认的版本控制工具是 Subversion,在这里我假定大家已经安装 和部署了 SVN 仓库。 安装前要说的 1. 关于本文中 Trac 的版本 Trac 目前最新的 Release 版本是 0.10.4 版本, 0.11 版本正在开发。 本文针对的是 0.10.4 版本,0.11 版本做了大量的更新,使用了新的模板,并集成了配置工具,预计近期

火龙果 ? 整理 uml.org.cn

发布,但目前的成熟度还不高,建议大家使用 0.10.4 版本。 2. 必须的组件 Python,版本 >= 2.3。目前最新版本是 2.5,因为 Trac 0.10.x 是在 2.4 版本下 开发的,并且 2.5 版本是新发布的,在 Trac 的官方文档中也说在 Python2.5 环境下使用 0.10.x 理论上可以工作,为了避免不必要的麻烦,建议大家使用 2.4 版本,本文就以 2.4 版来介绍。 ClearSilver ,版本 >= 0.9.3 ,目前最新版是 0.10.4 (注意, 0.10.4 版本需要 Python2.5) 。 这是一套快速、 强大、 语言无关的 html 模板系统, 在 Trac0.11 版本中被 Genshi 取代。 数据库,Trac 需要一个数据库来集中存放数据,目前支持的数据库包括 SQLite, PostgreSQL 和 MySQL。默认使用 SQLite,我个人非常喜欢 SQLite 这个小东西,功能够用, 部署方便,配置简单(简单到不需要配置) ,对于小团队完全够用。本文就使用 SQLite,如 果使用其他的数据库,请参照 Trac 官方文档。SQLite 需要 3.3.4 版本或以上。 使用 SQLite,必须安装 PySQLite, 需要版本 2.x。 3. 可选的组件 版本控制系统, Trac 功能上的一个亮点就是和版本控制工具的集成,默认使用 Subversion,本文使用 Subversion。但是从本质上讲,版本控制系统,并不是 Trac 所必须 的,只是集成了版本控制系统,使 Trac 更强大,这也是为什么 Subversion 是可选组件的原 因。使用 Subversion 还需要相应的 Python 绑定(the corresponding Python bindings)。 Web 服务器,在支持 CGI 或 FastCGI 的 Web 服务器上,Trac 可以通过脚本和接口作 为一个 CGI 来运行。还可以使用 Apache 服务器,但需要安装 mod_python 或 mod_wsgi。以 上的 Web 服务器部署方式, 可能对大部分人都太复杂, 所以 Trac 内置了一个单独运行的 Web 服务器,Tracd。在 Trac 官方的文档中说,Tracd 是一个轻量级的、独立的 Trac web 服务 器,在大多数情况下,它比 CGI 脚本更容易安装,并且更快。在本文中,我将使用 Tracd 作为 Web 服务器。 (我不懂 CGI 和 Apache,Tracd 拯救了我,这个小东东对我完全够用了) 开始安装 1. 下载程序 根据上面所说,我下载的程序包括 Python 2.4:http://www.python.org/ftp/python/2.4.4/python-2.4.4.msi Trac 0.10.4:http://ftp.edgewall.com/pub/trac/trac-0.10.4.win32.exe ClearSilver 0.9.14(我只找到了这个版本的安装包,其他版本都是源码,我不会 安 装 , 抱 歉 ) : http://www.clearsilver.net/downloads/win32/clearsilver-0.9.14.win32-py2.4.exe SQLite:不用下载,就一个文件而已,Trac 里面已经包含了。 pysqlite 2.3.4 ( 注 意 , 使 用 for Python2.4 的 版 本 ) : http://initd.org/pub/software/pysqlite/releases/2.3/2.3.4/pysqlite-2.3.4.win32py2.4.exe Subversion:需要注意,Trac 需要 python 绑定。如果你已经安装了 Subversion, 没 有 python 绑 定 , 可 以 下 载 单 独 的 python 绑 定 , 并 安 装 , 具 体 在 http://subversion.tigris.org/files/documents/15/38210/svn-win32-1.4.4_py24.zip。 也 可 以 卸 载 subversion , 安 装 subversion 的 python 绑 定 安 装 包 , 在 http://subversion.tigris.org/files/documents/15/38216/svn-python-1.4.4.win32-py 2.4.exe。如果未安装,直接安装绑定安装包即可。以上都是 subversion1.4.4 版本

火龙果 ? 整理 uml.org.cn

下载时注意,请下载 Windows 平台的二进制安装包(Windows binaries),不要下载 源代码,那个需要重新编译,很麻烦,反正我不会。 。 。我给的链接都是安装包,大家下载安 装即可(请首先安装 Python) 。 2. 安装 首先安装 Python,然后其他几个安装程序能够自动识别 Python 的安装,从而只需 要按照默认安装即可。默认安装目录是 C:\Python24\,在本文中我使用默认路径安装。 3. 给我们的项目配置 Trac 环境 Trac 环境就是一个存放 wiki 页面、tickets、报表、设置等等信息的后台存储器。 一个环境在 windows 里就是一个目录,包含了配置文件和其他相关的文件、目录。 假设,我们有个项目,代号叫 Angel,现在我们为这个项目配置 Trac 环境。 为了介绍方便,先介绍项目目录。假定项目配置都放在 \SCM\Angel\ 下,建立的 Subversion 仓 库 在 \SCM\Angel\SVN , 我 们 将 建 立 的 Trac 环 境 目 录 是 \SCM\Angel\Angel_Trac\。我一般将\SCM 目录放在非 C 盘,但这次我是在虚拟机上演示, 虚拟机只有一个 C 盘,所以,所有的目录在 C 盘里。 总结下,我们要使用到的目录: C:\Python24\ ( python 环境目录) , C:\SCM\Angel\SVN\ ( Angel 项目的仓库) , C:\SCM\Angel\Angel_Trac\(Angel 项目的 Trac 环境目录) 。 点击开始->运行,输入“cmd”,确认,打开 Dos 命令窗口,进入 Python 安装目录 下的 Scripts 子目录。在我这里是 C:\Python24\Scripts\。我们要使用 trac-admin 来创建 并初始化一个 Trac 环境。先看看用法 用法: trac-admin </path/to/projenv> [command [subcommand] [option ...]] 我们要使用的 command 是 initenv -- Create and initialize a new environment interactively(创建和初始化一 个新的环境) 下面来创建和初始化 Angel 项目的 Trac 环境,如下图,绿色不分是我们输入的命 令,黄色部分是我们在 Dos 窗口中需要交互的地方,白色窗口中给出了相应的解释。

火龙果 ? 整理 uml.org.cn

火龙果 ? 整理 uml.org.cn

火龙果 ? 整理 uml.org.cn

Ok, 我们在 C:\SCM\Angel\Angel_Trac\建立了 Trac 环境, 下面就是用 tracd 建立 web 站点, 通过浏览器访问了。看图说话

火龙果 ? 整理 uml.org.cn

现在, 我们就使用 tracd 建立了项目的 web 站点, 可以在浏览器中打开如下的网址进行访问 http://(trac 环境所在的机器名或者 ip 地址):tracd 使用的端口 比如,本例中使用的 http://127.0.0.1:8001 注意,在此期间不要关闭 tracd 运行的窗口,因为关闭了窗口,tracd 就停止运行了。难道 我们需要一直开着 tracd 窗口吗?目前是的。 但后面我会讲到将 tracd 封装成 windows 服务。 浏览器访问图片如下

火龙果 ? 整理 uml.org.cn

火龙果 ? 整理 uml.org.cn

上图中的“欢迎访问 Angel 项目"是我修改了 wiki 页。 ok,现在我们已经为项目 Angel 配置了 Trac 环境,并启动了 web 站点。今后,我 们就可以使用浏览器来访问它了,可以使用 ticket 、 roadmap 、 timeline ,可以浏览 subversion 容器,还可以使用强大的 wiki 丰富我们的站点,共享知识。这些都很简单,大 家多点点,多看看就明白了。 第一次如此认真在 blog 上写技术文章,希望能让大家看明白。如果有什么问题,可 以留言或者 email 我,知无不言。我也会一直写下去的,个人觉得 trac 真是个好东西,希 望大家从我的文章中能有所收益。 下一部分打算写基本使用,或是权限设置,不过可能得下周了。 参考文献: Trac 的官方指南,主要是其中的安装说明。 Subversion 中文站中的一篇文章——《 Windows 下安装配置集成 Trac》 。

火龙果 ? 整理 uml.org.cn

Trac 手记(一) : Windows 下安装 Trac
Trac 手记(一) : Windows 下安装 Trac 开发更好的软件,我相信 ITS(Issue Tracking System) 和 VCS(Version Control System) 是必不可 少的。对于国内现状,相信大多数本土公司都实施了 SCM ,却看不到 ITS 的痕迹。 所以,有必要学习和使用 Trac。

通过搜索引擎,知道有以下 ITS : Bugzilla : 基于 Perl。 Gemini : 非开源,基于 .Net,免费版可供 5 人使用, SharpDevelop 就是用的他。 JIRA : 基于 Java,重量级。 Mantis : 基于 PHP,轻量级。 Trac : 基于 Python。 考虑到一致性和其他各种原因,我选择 Trac。 本文主要内容就是介绍如何安装和配置 Trac,并与 Apache、Subversion 整合。

1) 准备软件 SVN-1.46 : http://subversion.tigris.org/files/documents/15/41077/svn-win32-1.4.6.zip SVN-1.46-Py2.5 : http://subversion.tigris.org/files/documents/15/41078/svn-win32-1.4.6_py25.zip TortoiseSVN-1.4.6 (可选) : http://jaist.dl.sourceforge.net/sourceforge/tortoisesvn/TortoiseSVN-1.4.6.11647-win32-sv n-1.4.6.msi TortoiseSVN-1.4.6-LangPack (可选): http://jaist.dl.sourceforge.net/sourceforge/tortoisesvn/LanguagePack-1.4.6.11647-win32-z h_CN.exe Apache-2.2.6 : http://apache.mirror.phpchina.com/httpd/binaries/win32/apache_2.2.6-win32-x86-no_ssl.msi

火龙果 ? 整理 uml.org.cn

Python-2.5 : http://www.python.org/ftp/python/2.5/python-2.5.msi Mod_Python-3.3.1-py2.5-Apache2.2 : http://apache.mirror.phpchina.com/httpd/modpython/win/3.3.1/mod_python-3.3.1.win32-py2.5 -Apache2.2.exe SetupTools-0.6c7 http://peak.telecommunity.com/dist/ez_setup.py

PySqlite-2.4.0-py2.5

:

http://initd.org/pub/software/pysqlite/releases/2.4/2.4.0/pysqlite-2.4.0.win32-py2.5.exe http://files.cnblogs.com/zealic/pysqlite-2.4.0.win32-py2.5.rar Trac-0.11b : http://ftp.edgewall.com/pub/trac/Trac-0.11b1.zip Genshi-0.4.4-py2.5 : http://ftp.edgewall.com/pub/genshi/Genshi-0.4.4-py2.5.egg 以上大多软件都有明确的依赖关系,切忌使用最新版本,比如 Mod_Python 依赖 Python-2.5,哪怕是 Python-2.5.1 都不支持。 将以上所有软件下载到 D:\Setup

2) 配置环境 2.1) 安装基本环境 首先安装 Python-2.5,这里假设安装到 D:\Python 安装 Apache-2.5.6,这里假设安装到 D:\Apache 安装 Mod_python。

2.2) 配置环境 在 httpd.conf 末尾加入以下代码:

火龙果 ? 整理 uml.org.cn

LoadModule python_module modules/mod_python.so Alias /hi/ "D:/Apache/htdocs/py_scripts/" <Directory "D:/Apache/htdocs/py_scripts/"> AddHandler mod_python .phtm PythonHandler test PythonDebug On </Directory>

创建一个文件 test.py 到 Apache 的 .\htdocs\py_scripts 目录中

[test.py]

from mod_python import apache def handler(req): req.content_type = 'text/plain' req.write("Hello World!") return apache.OK
2.3) 测试 启动 Apache 服务。 访问 http://127.0.0.1:8080/hi/hello.phtm 测试,出现 "Hello World!" 代表成功。

2.4) 安装 pysqlite 执行 pysqlite-2.4.0.win32-py2.5.exe 以自动安装 pysqlite。

3) 安装 Subversion 这里假设 Subversion 安装到 D:\Subversion 3.1) 安装 Subversion service 安装 Subversion 服务,请参考我的 用 BAT 注册 Subversion 服务 以简化安装步骤。

3.2) 安装 Python binding for Subversion 解压 svn-win32-1.4.6_py25.zip,将 svn 目录和 libsvn 目录复制到 D:\Python\Lib

火龙果 ? 整理 uml.org.cn

修改 libsvn 目录下的 "_*.dll" 文件为 "_*.pyd"

3.3) 与 Apache 整合 a) 装载模块 复制 D:\Subversion\bin 目录下的以下文件复制到目录 D:\Apache\dlls

- intl3_svn.dll - libdb44.dll - ssleay32.dll - libeay32.dll - mod_authz_svn.so - mod_dav_svn.so

b) 配置 Apache 在 httpd.conf 末尾加入以下代码:

LoadModule dav_module modules/mod_dav.so LoadModule dav_fs_module modules/mod_dav_fs.so LoadModule dav_svn_module dlls/mod_dav_svn.so LoadModule authz_svn_module dlls/mod_authz_svn.so <Location /svn> DAV svn SVNParentPath "G:\ALM\VersionRepository" </Location> # libsvn 依赖下面的两个 dll,如若不导入,则会造成 trac 无法进行 Browser source LoadFile "./dlls/ssleay32.dll" LoadFile "./dlls/libeay32.dll"
3.4) 测试 关闭 Apache 服务,并重启。 确保你的 Svn 仓库中存在 MyRepos。

火龙果 ? 整理 uml.org.cn

访问 http://127.0.0.1:8080/svn/MyRepos。 出现 Subversion 你的 MyRepos 仓库的目录结构则代表成功。

4) 安装 Trac 4.1) 安装 Trac a) 直接执行 ez_setup.py 以安装 Python SetupTools。

b) 解压 Trac 到 D:\Setup\Trac-0.11b1 安装 Trac 依赖包 Genshi-0.4.4-py2.5.egg

D:\Python\Scripts\easy_install D:\Setup\Genshi-0.4.4-py2.5.egg
c) 安装 Trac

D:\Setup\Trac-0.11b1\setup.py install
d) 初始化 trac 仓库

D:\Python\Scripts\trac-admin D:\ALM\trac\test initenv
按照命令提示进行 test 的配置。

4.2) 与 Apache 整合 在 Apache 中添加以下代码

<Location /trac> SetHandler mod_python PythonHandler trac.web.modpython_frontend PythonOption TracEnv D:\ALM\trac\test SetEnv PYTHON_EGG_CACHE /tmp PythonOption TracUriRoot /trac AuthType None </Location>

火龙果 ? 整理 uml.org.cn

4.3) 测试 打开 http://127.0.0.1:8080/trac/browser,检查是否显示 SVN 的目录树。 出现则代表成功。

5) 安装 TortoiseSVN (可选) 安装 TSVN 及其语言包。

6) 依赖关系图

图标释义 : 星星 : 独立组件。 灯泡 : 依赖其他独立组件的组件。

火龙果 ? 整理 uml.org.cn

魔法棒 : Apache 模块。 蓝线为依赖 Subversion。 橙线为依赖 Python。 紫线为依赖 Apache。

7) 结束语 Trac 配置起来很复杂,这里只做了简单的配置,甚至没做任何权限管理。 这些内容,我们下次再说。 警告 : 本文所使用的是 Trac 0.11b1 版,不保证对文章内容对其他版本适用。 同样也不推荐你在实际环境部署使用该 beta 版,如出现任何问题,概与本人无关。 如果你存在任何有关问题,请 mail 我 : rszealic{at}gmail.com

版权所有,保留所有权利。

8) 参考资料 The trac official site : http://trac.edgewall.org/ windows 下 Apache+SVN+Trac 安装及配置(二): http://luchar.javaeye.com/blog/151051 apache + mod_python 的问题 : http://bbs.chinaunix.net/thread-806879-1-1.html Windows 下 Trac 的安装方法 : http://bbs.phpxe.com/thread-44-1-1.html

火龙果 ? 整理 uml.org.cn

Subversion 中文在线手册 : http://www.subversion.org.cn/svnbook http://www.subversion.org.cn/svnbook/1.1/svn-ch-9-sect-6.1.html

在上一篇文章中我写了 Trac 的安装和基本配置,这篇我们来看看 Trac 的基本使用。 Trac 的使用说来是很简单的,大家多点点、多看看就明白了。而且,Trac 的官方网站也有 相应的教程,很详细,虽然是英文,但很简单,即便是英语不好的朋友,装个金山词霸也肯 定一看就懂。 个人认为,对于项目团队来说,Trac 对我们最有有的是 wiki、roadmap 和 tickets。大家可 以详细的看看这方面的帮助。 Wiki(什么是 wiki)可以帮助我们快速的搭建项目和内容管理平台,方便信息的发布和共 享。要顺利的使用 Wiki,项目团队中的每个人都要熟悉 wiki 的格式,学会新建和编辑 wiki 页面,其实是很简单的,看看例子就会啦,具体见 The Trac Wiki Engine。 Roadmap 可以帮助我们计划和管理项目中的工作,也就是里程碑管理。当然,也可以用于版 本规划等工作。 Milestone 配合 ticks, 可以在 Roadmap 中很方便的看到每个里程碑的工作, 以及完成了多少、 还剩多少。 我使用 Roadmap 来管理迭代计划, 非常之方便。 具体帮助见 The Trac Roadmap。 Ticket 是 Trac 的核心功能之一,它是一个简单但有效的问题和 bug 跟踪管理工具。当然, 还可以用于任务分配和管理。具体帮助见 The Trac Ticket System。 还有其他的功能, 包括 Timeline、 Rss、 Trac 对版本控制系统的集成等, 大家可以看看帮助, 都很简单。 如果自己没有配置 Trac 环境,还可以去 Trac 的 demo site 去看看,随便使用下,体会体 会 Trac 的强大功能,你会满意的。 了解 Trac 的配置文件 2007-07-17 14:46 Trac 相 关 的 配 置 都 保 存 在 trac.ini 文 件 中 , 这 个 文 件 的 路 径 是 “trac 环 境 目 录 /conf/trac.ini (对于我们的 Angel 项目, 就在 C:\SCM\Angel\Angel_Trac\conf\trac.ini) “。 修改这个配置文件后, 除了[components]和[logging]部分需要重新启动 web 服务 (与 Angel 项目来说,就是 tracd 命令) ,其它的修改都不需要重启 web 服务,配置的变化会立刻反应 到网站中。 关于该配置文件的帮助,在官方网站的 The Trac Configruation File。 下面的图是我对 Angel 项目的 trac.ini 抓图,并做了部分解释。Angel 的值相当于是 Trac 设置的默认值。

火龙果 ? 整理 uml.org.cn

火龙果 ? 整理 uml.org.cn

了解 trac-admin 2007-07-19 17:35 trac-admin 是 Trac 中一个功能强大的命令行配置工具,这个工具可以配置和自定义 trac, 满足用户的需求。 trac-admin 中的一些功能可以通过 WebAdmin 这个 trac 插件,在 web 界面上完成,当然, 这是插件是可选的,在以后会说说它。虽然 WebAdmin 可以完成 trac-admin 的大部分功能, 而且 跟方便,但了解下 trac-admin 的行命令操作还是有必要的。有个好消息是,在 trac 0.11 版本中,内置了 WebAdmin,不用装插件了。 调用 trac-admin help 可以查看 trac-admin 的选项、命令、子命令列表 C:\Python24\Scripts>..\python trac-admin help trac-admin 用法: trac-admin </path/to/projenv> [command [subcommand] [option ...]] 除了执行 help , about 或者 version 子命令,不需要指定 trac 环境的路径(也就是 /path/to/projenv)外,其他的子命令都需要将 trac 环境的路径作为第一个参数。比如 trac-admin /path/to/projenv wiki list 当调用 trac-admin,只传递了环境路径参数,没有指定命令和子命令时,trac-admin 将启 动交互模式,我们可以根据每一步的提示输入命令执行。在交互模式下,也可以获取指定 命令或子命令的帮助,例如 > help resync 获取‘resync’命令的说明 > help wiki 获取所有和 Wiki 相关的命令集的说明 命令索引: about -- 显示 trac-admin 的关于信息 help -- 显示帮助信息 initenv -- 在交互模式下,创建并初始化一个新的 trac 环境 initenv <projectname> <db> <repostype> <repospath> <templatepath> -- 使用指定的参数创建和初始化一个新的 trac 环境 hotcopy <backupdir>

火龙果 ? 整理 uml.org.cn

-- 生成 trac 环境的热拷贝(hot backup copy) resync -- 同步 trac 环境和版本仓库 resync <rev> -- Re-synchronize only the given <rev> upgrade -- 升级数据库到当前版本 wiki list -- 列出所有的 wiki 页面 wiki remove <name> -- 删除指定名称 wiki 页面 wiki export <page> [file] -- 导出 wiki 页面到指定的文件或标准输出 wiki import <page> [file] -- 从文件或标准输入中导入 wiki 页面 wiki dump <directory> -- 导出所有的 wiki 页面到指定的目录 wiki load <directory> -- 从指定的目录中导入 wiki 页面 wiki upgrade -- 升级默认 wiki 页面到当前版本 permission list [user] -- 列出所有的权限或指定用户的权限 permission add <user> <action> [action] [...] -- 向指定用户添加新的权限 permission remove <user> <action> [action] [...] -- 取消指定用户的权限 component list -- 显示可利用的模块

火龙果 ? 整理 uml.org.cn

component add <name> <owner> -- 添加一个新的模块 component rename <name> <newname> -- 重命名指定的模块 component remove <name> -- 移除指定的模块 component chown <name> <owner> -- 改变模块拥有者 ticket remove <number> -- 删除 ticket ticket_type list -- 显示所有可利用的 ticket 类型 ticket_type add <value> -- 添加一个 ticket 类型 ticket_type change <value> <newvalue> -- 改变指定的 ticket 类型 ticket_type remove <value> -- 移除指定的 ticket 类型 ticket_type order <value> up|down -- 向上或向下移动指定的 ticket 类型在类型列表中的位置 priority list -- 显示所有可利用的 ticket 优先级 priority add <value> -- 添加优先级 priority change <value> <newvalue> -- 重命名优先级 priority remove <value> -- 移除优先级 priority order <value> up|down -- 向上或向下移动指定的 ticket 优先级在列表中的位置

火龙果 ? 整理 uml.org.cn

severity list -- 显示所有可能的严重度 severity add <value> -- 添加严重度 severity change <value> <newvalue> -- 重命名严重度 severity remove <value> -- 移除严重度 severity order <value> up|down -- 向上或向下移动指定的 ticket 严重度在列表中的位置 version list -- 显示所有可利用的版本 version add <name> [time] -- 添加版本 version rename <name> <newname> -- 重命名版本 version time <name> <time> -- 设定指定版本的日期(格式: "YYYY-MM-DD" or "now") version remove <name> -- 移除版本 milestone list -- 显示所有可利用的里程碑 milestone add <name> [due] -- 添加里程碑 milestone rename <name> <newname> -- 重命名里程碑 milestone due <name> <due> -- 设定指定里程碑的到期日期 (格式: "YYYY-MM-DD" or "now") milestone completed <name> <completed> -- 设定指定里程碑的完成日期 (格式: "YYYY-MM-DD" or "now")

火龙果 ? 整理 uml.org.cn

milestone remove <name> -- 移除里程碑 参考文献: Trac 的官方指南,本文基本上是其中的 TracAdmin 的翻译。

在第一篇文章里提到,在使用 trac 站点期间不能关闭 tracd 运行的窗口,因为 关闭了窗口,tracd 就停止运行 了,Trac 站点也就不能访问了。这会带来一些 安全方面的问题, 因为 tracd 要以 dos 窗口的方式运行,那就要求用户必须登陆 操作系统, 进入 windows 桌面运行 tracd,这样任何人都可以在这台机器上关闭 tracd 或做其他的事情,系统管理员肯定希望程序能以 windows service 的形式 提供服务,这样更安全。 有两种方式可以将 tracd 封装成 windows 服务,一种是使用 trac 的插件 TracServiceScript , 另 一 种 是 使 用 Windows 2003 Resource Kits 中 的 SrvAny.exe 将 tracd 封装成 windows 服务。第一种,我没有试验成功,所以这 里只讲第二种,这两种方式的讨论大家可以看看这篇帖子。 下面介绍使用 SrvAny.exe 将 tracd 封装成 windows 服务, 本人使用的是 XP SP2, 其他 windows 系统应该大同小异: 1.下载 Windows 2003 Resource Kits,在微软官方有下载。下载后安装,默认 安装到 C:\Program Files\Windows Resource Kits\Tools 目录,其实我们只需 要 该 目 录 下 的 SrvAny.exe 和 instsrv.exe 文 件 即 可 , 在 此 目 录 下 还 有 rktools.chm 帮助文件,大家可以查看 SrvAny.exe 如何使用。 2.创建服务,语法如下:instsrv 服务名称 srvany 所在路径\srvany.exe。假 设我们的 Windows 2003 Resource Kits 都安装在 C:\Program Files\Windows Resource Kits\Tools 目录,待建立的服务名称是 TracSrv,那么我们的命令如 下: "C:\Program Files\Windows Resource Kits\Tools\instsrv" TracSrv "C:\Program Files\Windows Resource Kits\Tools\srvany.exe" 需要注意的是,srvany 前的路径不能省略,必须是绝对路径。具体如下图:

火龙果 ? 整理 uml.org.cn

现在我们已经创建了一个名叫 TracSrv 的服务,下一步我们来配置这个服务,让 它封装 tracd 命令。 3.在注册表中配置 TracSrv 服务,运行“regedit”,进入注册表。找到注册表 项“HKEY_LOCAL_MACHINE\SYSTEM\ CurrentControlSet\Services\TracSrv”, 在 TracSrv 项里建立新的子项“Parameters”,再在新建的 Parameters 项里新 建字符串值,数值名称设为“Application”,数值数据设为我们在第一篇说的 启动 tracd 的行命令,也就是 c:\python24\python c:\python24\scripts\tracd -p 8001 C:\SCM\Angel\Angel_Trac (注意使用全路径)。这样,我们就配置好了 TracSrv 服务。配置结果见下图:

4.启动 TracSrv 服务。现在我们就可以在浏览器中访问 Trac 网站,只要服务器启动,不需 要进入登陆 Windows 桌面,我们就可以访问 Trac 站点了。

如何删除这个服务呢?使用 sc.exe 即可,此命令在 xp 系统自带。 1.停止 TracSrv 服务。 2.运行 cmd,进入行命令窗口,输入“sc delete TracSrv",回车即可。 以上是在使用 Tracd 作为 Web 服务器时的做法, 其他的 Web 服务器 (比如 Apache) 本身就已经作为服务运行,不需要进行此设置。 另外, 以上讲的封装服务的方法是通用的,可以使用这种方法创建新的服务来封 装你的程序。

火龙果 ? 整理 uml.org.cn

Trac 中的单元:
Milestone(里程碑) :这个好理解,不做解释。 Version(版本) :项目的版本。 Component(组件):项目中的组件。 Ticket : 这个有人翻译为传票,有人翻译为任务单,我都觉得不妥,因此不做翻译。 Ticket type :Ticket 的类型,默认有 defect(缺陷)、enhancement(改进)、task(任务)。 Priority(优先级) :Ticket 的优先级。 Resolutions(解决方式) :Ticket 的解决方式,当要关闭 Ticket 时的选择。 Severity(严重程度):Ticket 的严重程度。 关系图如下:

由于 Trac 的灵活性,我们使用 Trac 来进行项目管理时,有很高的自由度,上述单元皆是可自定义的, 比如 Ticket 默认有如下类型:

1. Defect 2. Enhancement 3. Task

偷懒的人一般就默认使用这三个类型,如果是项目要求高一些,可以定义一些扩展的 Ticket 类型,如 Patch、Translate、Test,当然这只是举例说明,还是需要根据项目的具体需求来进行定制。 大多使用 Trac 进行项目管理都有一个中心,某些团队以 Milestone 为中心,有些以 Version 为中心, 有些以 Component 为中心,最后就是以 Ticket 为中心的,其松散程度是逐步增加的。

火龙果 ? 整理 uml.org.cn

Ticket 是 Trac 中最核心的单元,整个 Trac 都是围绕 Ticket 进行的,在应用 Trac 时,Ticket 可 以让团队中的人分工更为明确,比如市场调查可以只负责 Create Ticket、Edit wiki,开发人员、测试人 员根据自己的能力各自完成自己所属的 Ticket,最后以完成某个中心为终结;通过里程碑,管理者也可以 更快,更直接的了解到项目进度从而制定相应计划;通过 Wiki ,新进成员也可以更快速的融入项目。 不过这些都是以真正的应用 Trac 到项目的开发、管理、测试为前提。 很多应用 Trac 进行管理的人都说:现在最兴奋的事,不是完成一个一个的功能,是关闭一个又一个的 Ticket,看着里程碑逐渐接近 100%,工作热情也特别高涨。

权限管理
Trac 中的权限划分的很为细致,并且有用户组的概念,但是 Trac 并不包含用户信息,通常都是与 Apache 集成权限认证来获得用户信息。 当创建了一个 User Trac 环境时,默认权限分布如下: Action

-----------------------------anonymous anonymous anonymous anonymous anonymous anonymous anonymous anonymous anonymous anonymous anonymous anonymous BROWSER_VIEW CHANGESET_VIEW FILE_VIEW LOG_VIEW MILESTONE_VIEW REPORT_SQL_VIEW REPORT_VIEW ROADMAP_VIEW SEARCH_VIEW TICKET_VIEW TIMELINE_VIEW WIKI_VIEW

authenticated TICKET_CREATE authenticated TICKET_MODIFY

火龙果 ? 整理 uml.org.cn

authenticated WIKI_CREATE authenticated WIKI_MODIFY anonymous 代表匿名用户的权限,authenticated 代表登录用户所拥有的权限,权限信息都很易懂,就 不做解释;默认配置下,这是较为安全的,但是这样我们无法管理这个任务仓库,必须先分配一个管理员。 D:\Python\Scripts\trac-admin D:\ALM\Trac\MyProject permission add zealic TRAC_ADMIN TRAC_ADMIN 是最高级别权限,有了这个权限,登录名为 zealic 的用户就可以管理这个项目的所有信息 了。 登录 Trac 以后,在管理页面中 Trac 提供了 Permissions 选项,可以以可视化的方式更改权限信息。

集成
有了趁手的工具,我们当然愿意这个工具与旧有工具完美结合,以产生更高的价值。 好比 .Net 下的 TDD 拥有了 TestDriven.Net,提高的生产力可不是几句话就能够形容的,我也极度期 盼 .Net 能够提供与 Trac 集成的插件。 相比之下,我极羡慕 eclipse 3.3 中集成的 Mylyn,可以很方便的与 Bugzilla,JIRA,Trac 集成;好 吧,我承认,我希望有“逸士”能够造一个 NMylyn 或者 Mylyn.Net 供我们使用。 Trac 通过 xml-rpc 提供交互接口,也许某天,我会来做这个“逸士”;不过,似乎很难。

用户管理和身份验证
2007-09-05 22:44 在 Trac 中,添加、删除、配置用户账户以及身份验证的过程依赖于运行 Trac 的方式,也就 是使用哪种方式、在哪种 Web 服务器上运行 Trac。 下面介绍使用 Tracd 时如何管理用户帐号以及进行身份验证。 在以前的讲解中,我们建立了一个 Angel 项目的 Trac 环境,用以下的命令: C:\Python24\Scripts>..\python tracd -p 8001 C:\SCM\Angel\Angel_Trac 来运行 Trac 环境。 虽然使用浏览器访问该项目时,页面上方也有一个“Login”连接,但是是无法使用的,点 击了会报错,提示: “Authentication information not available. Please refer to the installation

火龙果 ? 整理 uml.org.cn

documentation.” 这是因为我们没有为该项目设置用户、分配权限和密码。要使 Login 可用,我们需要做以下 三个工作: 1. 创建用户并分配权限 过程如下图:

火龙果 ? 整理 uml.org.cn

现在我们的 Angel 项目有了一个 admin 的用户,是 Trac 的管理员。

火龙果 ? 整理 uml.org.cn

2. 给用户设定密码

Tracd 支持 Basic 和 Digest 两种身份验证方式,默认使用 Digest,在这里只介 绍 Digest 方式,这是来源于 Apache 的用户管理和身份验证方式。 Digest 方式需要提供一个特定格式的密码文件,可以使用 Apache 的 htdigest 命令来生成密码文件。如果没有 Apache,可以使用下面的 python 脚本来生成密 码(我就是使用的这种方式) from optparse import OptionParser import md5 # build the options usage = "usage: %prog [options]" parser = OptionParser(usage=usage) parser.add_option("-u", "--username",action="store", dest="username", type = "string", help="the username for whom to generate a password") parser.add_option("-p", "--password",action="store", dest="password", type = "string", help="the password to use") (options, args) = parser.parse_args() # check options if (options.username is None) or (options.password is None): parser.error("You must supply both the username and password") # Generate the string to enter into the htdigest file realm = 'trac' kd = lambda x: md5.md5(':'.join(x)).hexdigest() print ':'.join((options.username, realm, kd([options.username, realm, options.password]))) 将上面的代码保存到一个新文本文件中,并重命名该文件的扩展名为 py(假定修 改后该文件是 trac-digest.py,放在了 C:\SCM 目录),使用下面的命令 python trac-digest.py -u username -p password >> c:\digest.txt 具体到我们的项目就是 C:\Python24>python c:\scm\trac-digest.py -u admin -p admin >>c:\scm\digest.txt 会在 c:\scm\目录下生成一个 digest.txt 的密码文件,该文件的格式是“用户 名:范围名(readlm 名称,默认是 trac):密码的密文”。 如下图

火龙果 ? 整理 uml.org.cn

可以多次执行上面的命令在一个密码文件中为多个用户设定密码。 3. 使用带验证选项的行命令启动 tracd 命令如下 tracd -p 8080 --auth=project1,/path/to/users.htdigest,mycompany.com /path/to/project1 或者 tracd -p 8080 --auth=*,/path/to/users.htdigest,mycompany.com /path/to/project1 具体到我们的项目就是 C:\Python24\Scripts>..\python tracd -p 8001 --auth=Angel_Trac,c:\scm\digest.txt,trac C:\SCM\Angel\Angel_Trac 或者 C:\Python24\Scripts>..\python tracd -p 8001

火龙果 ? 整理 uml.org.cn

--auth=*,c:\scm\digest.txt,trac C:\SCM\Angel\Angel_Trac 需要注意: a.红色的部分,是 realm(范围),在行命令中的 realm 必须与生成密码文件的 脚本总的 realm 相同。 b.蓝色的部分,也就是--auth 的第一个参数,不是项目名称,是 Trac 环境全路 径的最后一个目录。 ok,现在打开浏览器,访问 Trac 网站,点击“Login”,就会弹出登陆对话框进 行身份验证了。如下图

是不是感觉很麻烦呢,没关系,Trac 有插件来扩展这些功能,我们随后就会介 绍如何用插件来管理用户和配置 Trac。

火龙果 ? 整理 uml.org.cn

最后,需要强调的是,这篇文章只是对使用 tracd 运行 Trac 的用户管理,其他 方式请参考 Trac 官方网站的指南。
安装 Trac 插件 2007-09-11 17:35

自 0.9 版本,Trac 支持通过插件来扩展内部的功能。插件的功能来自于 Trac 的组建架构(component archite

要求

Trac 中的插件是以 setuptools 包装成一个称为“egg”的包,它与 Java?的 JAR 文件类似,不过是用于 Python 的。为了使用 装 SetupTools(0.6 版本) 。我们可以下载 ez_setup.py 这个自引导模块来安装 setuptools。下载后(假设文件放在 c:\python2 图的命令:

从图中我们可以看到,ez_setup 先从网上下载 setuptools,然后安装,所以使用这种方法安装需要你的机器连上互联网。

如果使用 ez_setup.py 安装 setuptools 失败或不能联网,我们也能从 PyPI 网站下载,然后手工安装。

在 Trac 中,插件可以放在两个地方,Trac 环境的目录(为单个项目安装插件)或全局目录(0.10 及以后版本提 目安装插件)。

Trac 插件的形式
1. egg

大部分的插件都是以 egg 包的形式存在的,其实这个包是 zip 格式的,我们可以用 winzip、winrar 等压缩用具 egg 最好了,可以直接使用。 2. 源码 有些插件没有提供 egg 包,直接给出了源码。我们可以直接使用源码安装插件,也自己自己构建成 egg 包。

火龙果 ? 整理 uml.org.cn

如果有插件的源码,如何构建 egg 呢?
? ?

解压缩源码,里面应该有 setup.py。 运行:

python setup.py bdist_egg 然后,我们将得到一个*.egg 文件。 详情见下图:

火龙果 ? 整理 uml.org.cn

安装 Trac 插件
为单个项目

一旦我们有了插件包(egg 包),我们只需要把它拷贝到 Trac 项目环境的“plugins”目录下。同时,确保 we 的权限可以访问。需要注意的是,Python 的版本必须匹配。

为所有的项目

上面的介绍是将插件安装到单个 Trac 项目中,也就是把 egg 文件拷贝到项目的插件目录下。这里将介绍如何为 目(包括以后建立的项目)安装插件,根据插件源的不同有两种方式 使用.egg 文件 如果我们有插件的.egg 文件,很简单,使用 easy_install 安装即可(具体的介绍见这里) easy_install *.egg 从源代码安装

easy_install 能够网络安装,只需要指定一个 subversion 的仓库 URL 路径或者 tarball/zip 的路径。比如,W 样安装 easy_install http://svn.edgewall.com/repos/trac/sandbox/webadmin

启动插件
我们还需要通过修改 trac.ini 文件来启动插件,一般都是在 trac.ini 文件的[components]区域,比如: [components] webadmin.* = enabled 关于在 trac.ini 做怎样的修改,请查看插件的相关文档。也可以在插件的源代码中的__init__.py 看到。 注意:安装后需要重启 Web 服务器。

疑难解答
如何知道 setuptools 已经正确的安装了?

执行下面的命令: python -c "import pkg_resources" 如果没有输出,setuptools 已经安装了,否则,你需要安装 setuptools。

如何获取 Python egg 的正确版本?

Python egg 在文件名中注明了 Python 的版本。比如,MyPlugin-1.0-py2.4.egg 是针对 Python 2.4 的,如果 Trac 运行在不 上(比如 2.3 或者 2.5) ,这个 egg 将不会被载入。

火龙果 ? 整理 uml.org.cn

本文基本上都是翻译自 Trac 官网的 Trac Plugins, 并有所删减。 在这里只是说了如何安装 Trac 插件, 并没有举例。 在本系列的下一 插件管理 Trac 项目》里,将详细的演示如何安装 WebAdmin 这个非常棒的 Trac 插件。 在这里有很多值得推荐的 Trac 插件,更多的可以查看 Trac 插件的官方网站 。

参考文献: Trac 的官方指南中的 Trac Plugins。
使用 WebAdmin 插件管理 Trac 项目 2008-02-14 17:24 WebAdmin 是通过 web 接口管理 Trac 的一个插件。这个插件一直处于开发状态,但已经支持 trac-admin 的大部分功能。 注意:在即将发布的 0.11 版本的 Trac 中,这个插件不再需要,因为它将被整合到核心包中。 webadmin 插件从 Trac 的 Subversion 仓库中下载: svn export http://svn.edgewall.com/repos/trac/sandbox/webadmin/ 需要注意的是,这个仓库中的最新版本只支持 0.10.x,如果要获取 0.9.x 所用的版本,请 参见这里。 安装 webadmin 插件 在上一章中,我们提到,Trac 插件有两种部署方式,为单个项目安装和为所有的项目 安装。其中,为单个项目安装需要使用 egg 文件,为所有项目安装可以使用 egg 文件也可以 直接使用源码。 假设我们要使用到的目录: C:\Python24\ (python 环境目录) ,C:\SCM\Angel\SVN\ (Angel 项目的仓库) , C:\SCM\Angel\ Angel_Trac\ (Angel 项目的 Trac 环境目录) 当前目录为:C:\Python24\Scripts 安装前必须做的 要使用 webadmin 首先需要一个拥有管理员权限的用户,这需要我们提前创建。可以使 用第六章所讲的方法创建一个拥有 TRAC_ADMIN 权限的 admin 用户,并为之设定密码。 为单个项目安装 首先从 Trac 的仓库中下载插件,可以直接使用 svn 命令也可以使用 TortoiseSVN 等 Shell 下载,然后根据上一章所讲的方法制作 egg 文件。 这里再具体说一下,假定我们现 在的 webadmin 插件在 C:\webadmin,正常情况下该目录下会有 setup.py 文件,那我们就可 以使用 python setup.py bdist_egg 命令来获取 egg 文件。当然,你必须安装 setuptools,这在上一章有详细的介绍。 将 egg 文件放到 Trac 环境的插件目录中,Trac 将会自动启动 webadmin 插件了。 可以从这里下载我制作的 egg 文件。 为所有项目安装

火龙果 ? 整理 uml.org.cn

?

使用 egg 文件安装 easy_install xxxx.egg

?

使用源码安装 easy_install http://svn.edgewall.com/repos/trac/sandbox/webadmin

我们还需要通过修改 trac.ini 文件来激活 webadmin 插件,在 trac.ini 中添加 [components] webadmin.* = enabled 经过以上的步骤,webadmin 插件就安装完成了,下面重新启动 trac 服务,使用 刚刚建立的 admin 用户登陆 Trac,正常情况下导航栏 Search 右边会出现 admin 按钮,如果没有出现说明你的配置出了问题,请仔细检查。具体如下图:

火龙果 ? 整理 uml.org.cn

打开 admin 页面后, 可以看到很多的设置项, 其实这都是更方便的完成 trac-admin 的任务, 具体使用不多说了,安装麻烦,使用很容易上手。

参考文献: Trac 的官方指南中的 Trac Plugins。 Trac 的官方指南中的 WebAdmin。


赞助商链接