使用 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

Trac 系列 (2) Trac 的使用 2007-07-16 11:11 在上一篇文章中我写了 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 配置文件

Trac 系列 (3) :了解 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 设置的默认值。

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />
图片很大,请拖拽到单独的网页放大查看,或下载下来查看。

这个文件不用每个选项都了解,大致知道即可。 Trac 的很多个性化设置以及迁移都需要修改该配置文件,以后会慢慢讲到的。

参考文献:

trac-admin

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>
    --
生成 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
    --
显示可利用的模块

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 优先级在列表中的位置

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")

milestone remove <name>
    --
移除里程碑

安装为服务

Trac 系列 (5) :将 Tracd 封装为 Windows 服务
2007-08-17 19:56

在第一篇文章里提到,在使用 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 前的路径不能省略,必须是绝对路径。具体如下图:


现在我们已经创建了一个名叫 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 <?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />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 )本身就已经作为服务运行,不需要进行此设置。
另外,以上讲的封装服务的方法是通用的,可以使用这种方法创建新的服务来封装你的程序。

trac scm

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 版本做了大量的更新,使用了新的模板,并集成了配置工具,预计近期发布,但目前的成熟度还不高,建议大家使用 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
[url]http://www.python.org/ftp/python/2.4.4/python-2.4.4.msi[/url]
        Trac 0.10.4
[url]http://ftp.edgewall.com/pub/trac/trac-0.10.4.win32.exe[/url]
        ClearSilver 0.9.14
(我只找到了这个版本的安装包,其他版本都是源码,我不会安装,抱歉): [url]http://www.clearsilver.net/downloads/win32/clearsilver-0.9.14.win32-py2.4.exe[/url]
        SQLite
:不用下载,就一个文件而已, Trac 里面已经包含了。
        pysqlite 2.3.4
(注意,使用 for Python2.4 的版本): [url]http://initd.org/pub/software/pysqlite/releases/2.3/2.3.4/pysqlite-2.3.4.win32-py2.4.exe[/url]
        Subversion
:需要注意, Trac 需要 python 绑定。如果你已经安装了 Subversion ,没有 python 绑定,可以下载单独的 python 绑定,并安装,具体在 [url]http://subversion.tigris.org/files/documents/15/38210/svn-win32-1.4.4_py24.zip[/url] 。也可以卸载 subversion ,安装 subversion python 绑定安装包,在 [url]http://subversion.tigris.org/files/documents/15/38216/svn-python-1.4.4.win32-py2.4.exe[/url] 。如果未安装,直接安装绑定安装包即可。以上都是 subversion1.4.4 版本

        
下载时注意,请下载 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 窗口中需要交互的地方,白色窗口中给出了相应的解释。




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

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


上图中的 欢迎访问 Angel 项目 " 是我修改了 wiki 页。

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

trac login

TRAC 配置用户权限
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 documentation .”
这是因为我们没有为该项目设置用户、分配权限和密码。要使 Login 可用,我们需要做以下三个工作:

1.
创建用户并分配权限
过程如下图:



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

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): 密码的密文 。如下图


可以多次执行上面的命令在一个密码文件中为多个用户设定密码。

3.
使用带验证选项的行命令启动 tracd
命令如下
tracd -p 8080 --auth=project1,/path/to/users.htdigest,mycompany.com /path/to/project1
或者
[size=+0] 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
或者
[size=+0] C:\Python24\Scripts>..\python tracd -p 8001 --auth=*,c:\scm\digest.txt, trac C:\SCM\Angel\ Angel_Trac
需要注意:
a.
红色的部分,是 realm (范围),在行命令中的 realm 必须与生成密码文件的脚本总的 realm 相同。
b.
蓝色的部分,也就是 --auth 的第一个参数,不是项目名称,是 Trac 环境全路径的最后一个目录。
ok
,现在打开浏览器,访问 Trac 网站,点击 “Login” ,就会弹出登陆对话框进行身份验证了。如下图


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

最后,需要强调的是,这篇文章只是对使用 tracd 运行 Trac 的用户管理,其他方式请参考 Trac 官方网站的指南。


参考文献: