使用trac进行项目管理

软件介绍

  Trac是一个为 软件开发项目需要而集成了Wiki和问题跟踪管理系统的应用平台,是一个 开源软件应用。Trac以简单的方式建立了一个 软件项目管理的Web应用,以帮助开发人员更好地写出高质量的软件;Trac应用力求不影响现有团队的开发过程。

编辑本段开发语言

  Trac是采用Python语言开发的,因此Trac的在运行的时候,需要有Python环境的支持,在本手册中Python采用2.5,Trac采用0.11Beta版本、Apache 2.2。
  整个Trac是建立在WIKI和TICKET基础上的,WIKI在工具中充当书写文档、TICKET等的语法,它包含了一些类型HTML语法,但简化了的语法格式,在Guide文档中有语法的详细介绍。WIKI的具体含义将在“Trac中的WIKI”一节中进行详细介绍。TICKET是Trac中的另一个重要的组成部分,Trac使用Ticket传递信息,信息传递的单位个体也以Ticket作为标准。一个Ticket是具体需要做的事情的载体,也当然包含很多描述性信息。

编辑本段模型

  Trac是以面向进度模型为项目管理模型的,很明显的特点就是它以里程碑(Milestone)方式进行项目管理的。每个里程碑中的具体要做哪些事情,就使用Ticket来进行定义、跟踪等。里程碑是什么呢?里程碑是一些事件,我们设立这些事件是为了表明当这些事件发生的时候,我们的工作已经达到了某种程度。为什么我不用时间点呢?原因在于使用时间点往往让人误以为,里程碑是按照时间来设计的,而不是按照事件来设立的。
  另外,Trac做一个SCM配置管理平台,意味着它有良好的扩充性。通过WebAdmin界面中的Plugin功能,可以很方便的安装下载的插件,也可以通过此功能查看已经安装的插件,并可对其中的插件进行启用或停用操作。

编辑本段体系架构

Trac权限体系

  Trac的权限体系是比较完备的设计,默认情况下trac有anonymous和authenticated两种性质的用户组。Anonymous即匿名组,默认情况下只要能访问apache提供的trac实例服务,那么就属于这个组,这个组浏览trac实例界面时,将根据trac实例设定的权限方案提供可以浏览的内容。
  在通常情况下,我们都给某个trac实例指定admin用户,即权限最大的用户。可以通过trac-admin 实例名 permission add 用户名 TRAC_ADMIN,命令在dos提示符下创建此实例的 管理员帐户。需要注意的是权限是区分大小写的。设置成功后,此用户验证登录后,将能够看到Admin这个webadmin管理界面。可以通过此界面可视化的对trac实例进行管理。
  Trac使用Subject和Action方法绑定来进行赋权。Subject即操作对象,Action即可以执行的动作。通过这种关系映射,从而实现Trac的权限管理。默认情况下Trac包含anonymous和authenticated两个Subject,通过前面的trac-admin后,将出现第三个subject,即用户名。
  对于Subject具体的赋权操作,可通过下图完成。通过对Subject的分配Action即可完成赋权操作,通过Remove selected items可以取消某个Subject已经分配的权限。需要注意的是TRAC_ADMIN是最大权限。同时也可以对Subject进行分组管理。某个组拥有的权限,组员将会自动继承。

Trac中的WIKI

  在Trac中随处可见WIKI的影子。Trac的welcome页面,Ticket的编写等等,在整个Trac界面中均可以使用WIKI的语法书写文档。WIKI包含自己的一套语法,采用Genshi才渲染Web页面,或者说解释WIKI语法到HTML语法。

Trac中的Roadmap

  Roadmap中文翻译路线图。在Trac中使用Roadmap展现某个软件的开发过程。在Roadmap中,通过Milestone来分解软件开发的整个生命周期。多个Milestone就构成了一个Roadmap。当然一个 软件交付后,在以后的维护过程中的变更、修改等都创建新的Milestone进行管理。

Trac中的Timeline

  Timeline中文可译作时间线,它是以时间进度为参考轴,按时间倒序的方式显示此trac实例中所以的操作日志。它监控的对象包括:
  u WIKI事件:创建和更改动作;
  u Ticket事件:创建、更改、完成等所有的Ticket的事件;
  u Source chanege事件:资源库的代码发生一些动作事件;
  u Milestone事件:Milestone结束事件。

Trac中的Ticket

  Ticket是trac中管理项目的核心元素,它在trac中被用作项目的任务、功能需求、 错误报告、软件发布支持等,它采用WIKI作为其描述部分文字的语法.

Trac中的Report

  Report在trac中主要的用于显示ticket,可以根据上文中提到的ticket所有的属性进行过滤,同时也可以定义显示ticket哪些字段属性,如果觉得用户设定的查询条件及显示方式很有价值,那么你可以保存此查询Report,在下次直接使用。这样在菜单“VIEW TICKETS”中看到此报表。需要注意的是Report只查询ticket。

Trac中的Search

  Search主要是对ticket和WIKI进行查询的,查询的内容为ticket和wiki内容,其实查询的就是timeline菜单中列出的所有的内容。Trac使用全文检索的方式进行查询。具体就不在描述。Search输入框中的最小长度的设置在Trac.ini配置文件中进行配置,参考Help/Guide。

Trac中的Admin

  Trac中的admin都是一些重要的操作,但是同时也是很简单的操作,都是对trac整个环境的基本信息做一些设置。包含两个部分的设置,即general和ticket。

编辑本段Trac如何管理一个软件项目生命周期

  Trac采用面向进度的开发模型,因此产生了Milestone的概念,那么Milestone虽然建立了阶段性的里程碑,但是里程碑具体怎么才能到达呢?这就需要采用ticket方式进行处理。当定义的所以的ticket全部closed时,就说明到达了里程碑,但是达到了也并不表示所有的ticket都是fixed,也许是其他的原因关闭的。还有虽然到达了里程碑,但是未必是按时完成的,但是总的阶段性结束点是很明确的。
  因此用trac管理一个项目,就要做好以下几方面的工作:
  u 划分里程碑
  u 划分项目components
  u 划分ticket
  u 熟练掌握Ticket的运作机制
  u 熟练掌握Change History的查看和使用
  u 熟练掌握Milestone的查看和使用
  前面三项属于项目架构范畴,后面三项属于操作范畴。对于前面三项各自的划分原则是:
  ü 划分里程碑原则
  里程碑是一些事件,我们设立这些事件是为了表明当这些事件发生的时候,我们的工作已经达到了某种程度。而我们不能够仅仅使用时间点来划分里程碑。
  至于选择什么事件作为里程碑,其实就是选择项目利益相关人员最关心的事件作为里程碑。如果为项目计划时间表开一个会议,肯定有很多人提出他们关心的事件或者时间点,比如销售人员会问开发人员什么时候完成alpha测试,好让他们去找客户做beta测试,老板在听完大致计划之后会问什么时候拿出第一个运行版本,开发人员会问什么时候能够签约以便可以开始正式的工作。这些事件或者时间点就是最好的里程碑,里程碑之所以能够标示项目进度,是因为它是项目相关人员关心的事件,里程碑标示进度的含义也是事件的含义。
  在实际项目工作中,里程碑是否已经达到,也是非常明确的事情。事件是否发生应该是很明确的,如果不明确说明选择的里程碑不是一个事件,比如“评审通过”、客户在合同上签字、需求分析文档被老板批准,测试中bug收敛,这些事情是否发生都是很清晰的,是一个明确的时间点。
  ü 划分Component原则
  一般情况下按功能模块来划分,比如 协同办公系统可以划分为公文处理、个人办公、 电子邮件等等。组件和里程碑之间的关系是,一个组件可以属于多个里程碑,当然一个里程碑里面也可以包含多个组件,它们之间是多对多的关系,但是在trac里面是以里程碑为导向的,所以我们应该站在里程碑这条轴上去管理软件项目。
  具体的Component如何划分,这就需要跟实际的情况决定了。
  ü 划分Ticket原则
  Ticket系统简介 Ticket系统是Trac中关于项目管理的一个重要单元,它是一个简单有效的版本差异和Bug跟踪系统。
  在项目开发过程中出现的任何问题,都可以用一个Ticket来标识,例如Bug,项目计划,功能改进,项目建议,Todo等等,都可以写成一个Ticket,开发人员通过访问查看Ticket系统,可以及时的了解到项目进度,有待解决的地方等等
  每个Ticket都可以被修改和说明(Description属性),并说明这个Ticket是Bug还是项目建议还是其他什么(Type属性),指派由哪个人对这个Ticket负责(Assigned to/Owner属性),设定Ticket的优先级(Priority属性),设定Ticket的最终完成时间(Milestone属性),设定这个Ticket属于哪个模块(Component属性)。一个Milestone包含一个名称和时间,其中时间即为项目中这个阶段的预计完结时间,我们通过设定这个属性,来表明所要创建的Ticket属于哪个Milestone,属于项目的哪个阶段,该在哪个时间之前完成。

JIRA是集项目计划、任务分配、需求管理、错误跟踪于一体的商业软件。JIRA创建的问题类型包括New Feature、Bug、Task和Improvement四种,还可以自己定义,所以它也一是过程管理系统。JIRA融合了项目管理、任务管理和缺陷管理,许多著名的开源项目都采用了JIRA。

目录

基本概况
功能列表
JIRA的优点
JIRA的缺点
使用情况
相关版本
JIRA的主要功能如下:

编辑本段基本概况

  JIRA 是目前比较流行的基于Java架构的管理系统,由于Atlassian公司对很多开源项目实行免费提供缺陷跟踪服务,因此在开源领域,其认知度比其他的产品要高得多,而且易用性也好一些。同时,开源则是其另一特色,在用户购买其 软件的同时,也就将 源代码也购置进来,方便做二次开发。
  JIRA功能全面,界面友好,安装简单,配置灵活,权限管理以及可扩展性方面都十分出色。

编辑本段功能列表

  ● 问题追踪和管理:用它管理项目,跟踪任务、bug、需求,通过jira的邮件通知功能进行协作通知,在实际工作中使工作效率提高很多
  ● 问题跟进情况的分析报告:可以随时了解问题和项目的进展情况
  ● 项目类别管理功能:可以将相关的项目分组管理
  ● 组件/模块负责人功能:可以将项目的不同组件/模块指派相应的负责人,来处理所负责的组件的Issues
  ● 项目email地址功能:每个项目可以有不同的email(该项目的通知邮件从该地址发出)
  ● 无限制的工作流:可以创建多个工作流为不同的项目使用

编辑本段JIRA的优点

  使用JIRA管理项目,跟踪任务、bug,通过JIRA的邮件通知功能进行协作通知,在实际工作中可以使工作效率显著提高,安全性及可扩展性也有所体现。
  JIRA不仅仅是一个缺陷跟踪系统,通过JIRA,可以整合客户、开发人员、测试人员,通过各自和共同的模块,信息能够及时得到交流和反馈。
  Eclipse和IDEA下的JIRA插件,主要为开发人员服务,实时将信息反馈给开发人员,开发人员同时迅速地将修复的结果信息反馈到跟踪系统中,最后通过持续集成,软件可以迅速完成了更新。
  JIRA还拥有众多插件的支持,包括生成报表,XP编程,与SVN集成等,能够极大地丰富其功能。
  跟同类软件产品TestTracker、ClearQuest、TestDirector相比,JIRA的性价比最好!

编辑本段JIRA的缺点

  对于测试需求、 测试用例等都没有提供直接的方式进行管理。不过可以利用JIRA的Issue Type的可定制性,来进行需求和测试用例方面的管理,也可以与Testlink集成。

编辑本段使用情况

  国际化缺陷跟踪管理的专业软件:JIRA,它用于帮助公司和团队跟踪工作中的问题,管理和记录这些问题的处理过程。现在, JIRA已经被分布于94个国家的8100多个组织管理人员、开发人员、分析人员、测试人员和其他人员所广泛使用。

编辑本段相关版本

  JIRA 4.0版本之后,不再按照功能区分版本。取消了以前的 标准版,专业版,企业版之分;取而代之的是按照用户数量来划分:25、50、100、无限制用户。
  所有的版本都具有之前企业版的功能!
  JIRA不限制创建项目数和Issue的数量,购买之后可以永久使用;并且一年内免费更新版本。

编辑本段JIRA的主要功能如下:

  1. 项目类别管理功能:可以将相关的项目分组管理。
  2. 组件/模块负责人功能:可以将项目的不同组件/模块指派相应的负责人,来处理所负责的组件的Issues。
  3. 项目email地址功能:每个项目可以有不同的email(该项目的通知邮件从该地址发出)。
  4. LDAP配置器:用于将JIRA连接到公司的 LDAP目录上。
  5. Issue安全级别:在一个项目里可以精确地控制对Issue的访问。
  6. 可订制的工作流:可以创建多个工作流为不同的项目使用;
  7. 快速搜索和JQL高级查询功能。
  9. 子任务功能:可以在某个Issue下创建子任务;
  10. 共享过滤器功能:一个团队成员可以访问共享的过滤器;
  11. 多个dashborads功能:可以定制自己的JIRA显示面板;
  12. 与CVS、SVN,ClearCase, Mercurial的集成;通过FishEye还可以连接Git代码库。
  13. 与GreenHopper集成后支持敏捷开发;
  14. 通过IDE连接器,可以将JIRA集成到 Eclipse、IntelliJ IDEA、MS Visual Studio。
扩展阅读:


mantis

  缺陷管理平台Mantis,也做MantisBT,全称Mantis Bug Tracker 
  Mantis是一个基于PHP技术的轻量级的开源 缺陷跟踪系统,以Web操作的形式提供项目管理及缺陷跟踪服务。在功能上、实用性上足以满足中小型项目的管理及跟踪。更重要的是其开源,不需要负担任何费用。

编辑本段Manti

  Mantis是一个缺陷跟踪系统具有多特性包括:易于安装,易于操作,基于Web,支持任何可运行PHP的平台(Windows,Linux,Mac,Solaris,AS400/i5等),已经被翻译成68种语言,支持多个项目,为每一个项目设置不同的用户访问级别,跟踪缺陷变更历史,定制我的视图页面,提供全文搜索功能,内置报表生成功能(包括图形报表),通过Email报告缺陷,用户可以监视特殊的Bug,附件可以保存在web服务器上或数据库中(还可以 备份FTP服务器上),自定义缺陷处理工作流,支持输出格包括csv、MicrosoftExcel、MicrosoftWord,集成 源代码控制(SVN与CVS),集成wiki知识库与聊天工具(可选/可不选),支持多种数据库(MySQL、MSSQL、PostgreSQL、Oracle、DB2),提供WebService(SOAP)接口,提供Wap访问。
  Mantis基本特性:
  1,个人可定制的Email通知功能,每个用户可根据自身的工作特点只订阅相关缺陷状态邮件;
  2,支持多项目、多语言;
  3,权限设置灵活,不同角色有不同权限,每个项目可设为公开或私有状态,每个缺陷可设为公开或私有状态,每个缺陷可以在不同项目间移动;
  4,主页可发布项目相关新闻,方便信息传播;
  5,便的缺陷关联功能,除重复缺陷外,每个缺陷都可以链接到其他相关缺陷;
  6,缺陷报告可打印或输出为CSV格式,1.1.7版:支持可定制的报表输出,可定制用户输入域;
  7,有各种缺陷趋势图和柱状图,为项目状态分析提供依据,如果不能满足要求,可以把数据输出到Excel中进一步分析;
  8,流程定制方便且符合标准,满足一般的缺陷跟踪。
  MantisBT 官方下载站 见扩展阅读
  Mantis也是由 美国UPPER DECK公司出品的卡牌类比赛 软件
  可以应用于游戏王、漫画英雄、魔兽世界等卡牌游戏的比赛操作,也可以对本地牌手进行管理。
  
mantis ['mæntis]n. 螳螂
  n. 螳螂
  复 数:mantises,mantes
  点击查看……
  同反义词
  
同:[n.] mantid
  点击查看……
  参考例句
  A mantis nipped my finger.螳螂挟住我的手指。不适合 A mantis cannot stop the wheel of a cart.螳臂岂能挡车。不适合




不过我在项目组中推广的SCM是HG,以后把HG+Trac+Apache补上。

SVN + Trac + Apache 完整安裝攻略

VIEW COMMENTS / PRINT THIS POST

SVN + Trac + Apache 完整安裝攻略,而原本在 SVN 所欠缺的用戶及權限管理介面,也都可以由 Trac 的外掛程式來搞定,可謂兩全其美。

本文章適合熟悉 SVN 但沒用個任何線上專案管理的人做為參考。

請注意,本人使用的 Linux  CentOS 4.xRHEL 4.x 也適用。

1. 伺服器環境及設置

在伺服器上,我的設置如下:

  1. SVN 相關設定檔: /etc/svn/
  2. SVN 檔案庫的根目錄: /var/svn/ (裡面可以存放多個檔案庫)
  3. Trac 專案的根目錄: /var/trac/ (裡面可以存放多個專案)
  4. SVN 用戶的帳號密碼檔: /etc/svn/account
  5. SVN 用戶的權限檔: /etc/svn/authz
  6. 伺服器 IP: 192.168.1.10
  7. SVN 的存取網址: http://192.168.1.10/svn
  8. Trac 的存取網址: http://192.168.1.10/trac

所以要先建立這些目錄及檔案:

mkdir /etc/svn

mkdir /var/svn

mkdir /var/trac

touch /etc/svn/account

touch /etc/svn/authz

chown -R apache /etc/svn

因為 “account”  “authz” 這兩個檔案都需要由 Trac 來管理,所以都要把擁有者改為apache (包含 /etc/svn 這個目錄)

2. 增加 YUM 的套件伺服器

編輯 /etc/yum.repos.d/CentOS-Base.repo,在檔案最後加入下列的 yum 套件伺服器(來自dag  kbs):

[dag]

name=Dag RPM Repostory for RHEL

baseurl=http://apt.sw.be/redhat/el$releasever/en/$basearch/dag/

gpgkey=http://dag.wieers.com/packages/RPM-GPG-KEY.dag.txt

gpgcheck=1

enabled=1

[kbs-CentOS-Misc]

name=CentOS.Karan.Org-EL$releasever - Stable

baseurl=http://centos.karan.org/el$releasever/misc/stable/$basearch/RPMS/

gpgkey=http://centos.karan.org/RPM-GPG-KEY-karan.org.txt

gpgcheck=1

enabled=1

增加了這兩個套件伺服器之後,就可以直接用 yum 安裝 SVN  Trac 了。

3. 安裝 SVN 及相關套件

 yum 輕鬆安裝 SVN 主程式及相關套件:

yum -y install subversion subversion-perl mod_dav_svn apr apr-util

4. 安裝 TRAC 及相關套件

 yum 輕鬆安裝 Trac 主程式及相關套件:

yum -y install trac clearsilver python-clearsilver

5. 修改網頁配置:

編輯 /etc/httpd/conf/httpd.conf,在最後面加上:

LoadModule dav_svn_module modules/mod_dav_svn.so

LoadModule authz_svn_module modules/mod_authz_svn.so

<Location /svn>

  DAV svn

  SVNParentPath /var/svn

  Satisfy Any

# HTTP 用戶驗證

  AuthType Basic

  AuthName "SVN Repository"

  AuthUserFile /etc/svn/account

  AuthzSVNAccessFile /etc/svn/authz

  Require valid-user

</Location>

<Location /trac>

  SetHandler mod_python

  PythonInterpreter main_interpreter

  PythonHandler trac.web.modpython_frontend

  PythonOption TracEnvParentDir /var/trac

  PythonOption TracUriRoot /trac

# HTTP 用戶驗證

# AuthType Basic

# AuthName "Trac Project"

# AuthUserFile /etc/svn/account

# Require valid-user

</Location>

請注意上面註解(#)的部份,因為要用 Trac 的外掛程式來管理用戶的登入,所以就不需要 HTTP用戶驗證,如果比較喜歡用 HTTP 驗證就把下面四行的註解拿掉即可,並且下面 trac.ini 的設定也要把 “trac.web.auth.LoginModule” 啟用。

6. 建立第一個 SVN 的儲存庫

先在 /var/svn 建立一個名為 “project1 的儲存庫:

svnadmin create /var/svn/project1

chown -R apache /var/svn/project1

7. 新增一個管理者帳號

先在 /etc/svn/account 新增一個名為 “admin” 的管理者:

htpasswd /etc/svn/account admin

是的,只要建立這一個管理者用戶即可,稍後可以在 Trac 的外掛程式來新增其它用戶及管理其權限。

8. 建立第一個 TRAC 的專案

繼續在 /var/trac 建立一個名為 “project1 的專案:

trac-admin /var/trac/project1 initenv

執行時會問你一些東西,你需要輸入 “Project Name” 代表專案名稱,而 “Path to repository” 必須輸入 “/var/svn/project1,代表 SVN 儲存庫的路徑,其它選項只要按Enter 使用預設值即可。這裡面的值稍後可以在專案目錄底下的 conf/trac.ini 做修改。

接著仍需將專案的擁有者改為 “apache”:

chown -R apache /var/trac/project1

9. 安裝 TRAC 的外掛程式

安裝 Trac 的外掛程式前,需安裝 python-setuptools 及建立 Python Egg 的快取目錄:

cd /tmp

wget http://peak.telecommunity.com/dist/ez_setup.py

python ez_setup.py

mkdir /var/www/.python-eggs

chown apache /var/www/.python-eggs

 easy_install 安裝五個實用的 Trac 外掛程式 (安裝 for Trac 0.10 的版本):

easy_install http://svn.edgewall.com/repos/trac/sandbox/webadmin

easy_install http://trac-hacks.org/svn/iniadminplugin/0.10

easy_install http://trac-hacks.org/svn/accountmanagerplugin/0.10

easy_install http://trac-hacks.org/svn/tracwysiwygplugin/0.10

easy_install http://trac-hacks.org/svn/svnauthzadminplugin/0.10

這五個外掛程式分別為:

  1. WebAdmin: Trac 的基本管理模組。
  2. IniAdmin: trac.ini 管理。
  3. Account Manager: Trac 的用戶管理。
  4. TracWiki WYSIWYG Editor: 讓 Wiki 編輯器變成 WYSIWYG 編輯器。
  5. Svnauthz File Administration: SVN 的帳號及存取權限管理。

然後繼續編輯 /var/trac/project1/conf/trac.ini,在最後加上:

[components]

#啟用 WebAdmin 外掛程式

webadmin.* = enabled

#啟用 IniAdmin 外掛程式

iniadmin.iniadmin.iniadminplugin = enabled

#啟用 TracWysiwyg 外掛程式

tracwysiwyg.* = enabled

#啟用 SvnAuthzAdmin 外掛程式

svnauthz.* = enabled

#啟用 AccountManager 外掛程式

acct_mgr.api.accountmanager = enabled

acct_mgr.htfile.HtPasswdStore = enabled

#關閉預設的 Http 登入認證方式,改用 AccountManager 的登入認證

trac.web.auth.LoginModule = disabled

acct_mgr.web_ui.LoginModule = enabled

#啟用帳號管理

acct_mgr.admin.AccountManagerAdminPage = enabled

#允許用戶變更密碼、刪除帳號

acct_mgr.web_ui.AccountModule = enabled

[account-manager]

password_format = htpasswd

password_file = /etc/svn/account


http://blog.csdn.net/ren911/article/details/5314832


 开发更好的软件,我相信 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-svn-1.4.6.msi
  TortoiseSVN-1.4.6-LangPack (可选):
    http://jaist.dl.sourceforge.net/sourceforge/tortoisesvn/LanguagePack-1.4.6.11647-win32-zh_CN.exe

  Apache-2.2.6 :   
    http://apache.mirror.phpchina.com/httpd/binaries/win32/apache_2.2.6-win32-x86-no_ssl.msi
  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 末尾加入以下代码:

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
    修改 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。
      访问 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 >

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



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



6) 依赖关系图


图标释义 :
 
星星 : 独立组件。
  灯泡 : 依赖其他独立组件的组件。
  魔法棒 : 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

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

 

SVN + Trac + Apache 完整安裝攻略,而原本在 SVN 所欠缺的用戶及權限管理介面,也都可以由 Trac 的外掛程式來搞定,可謂兩全其美。

本文章適合熟悉 SVN 但沒用個任何線上專案管理的人做為參考。

請注意,本人使用的 Linux 是 CentOS 4.x,RHEL 4.x 也適用。

1. 伺服器環境及設置

在伺服器上,我的設置如下:

  1. SVN 相關設定檔: /etc/svn/
  2. SVN 檔案庫的根目錄: /var/svn/ (裡面可以存放多個檔案庫)
  3. Trac 專案的根目錄: /var/trac/ (裡面可以存放多個專案)
  4. SVN 用戶的帳號密碼檔: /etc/svn/account
  5. SVN 用戶的權限檔: /etc/svn/authz
  6. 伺服器 IP: 192.168.1.10
  7. SVN 的存取網址: http://192.168.1.10/svn
  8. Trac 的存取網址: http://192.168.1.10/trac

所以要先建立這些目錄及檔案:

mkdir /etc/svn
mkdir /var/svn
mkdir /var/trac
touch /etc/svn/account
touch /etc/svn/authz
chown -R apache /etc/svn

因為 “account” 及 “authz” 這兩個檔案都需要由 Trac 來管理,所以都要把擁有者改為 apache (包含 /etc/svn 這個目錄)

2. 增加 yum 的套件伺服器

編輯 /etc/yum.repos.d/CentOS-Base.repo,在檔案最後加入下列的 yum 套件伺服器(來自 dag 及 kbs):

[dag]
name=Dag RPM Repostory for RHEL
baseurl=http://apt.sw.be/redhat/el$releasever/en/$basearch/dag/
gpgkey=http://dag.wieers.com/packages/RPM-GPG-KEY.dag.txt
gpgcheck=1
enabled=1
[kbs-CentOS-Misc]
name=CentOS.Karan.Org-EL$releasever - Stable
baseurl=http://centos.karan.org/el$releasever/misc/stable/$basearch/RPMS/
gpgkey=http://centos.karan.org/RPM-GPG-KEY-karan.org.txt
gpgcheck=1
enabled=1

增加了這兩個套件伺服器之後,就可以直接用 yum 安裝 SVN 及 Trac 了。

3. 安裝 SVN 及相關套件

以 yum 輕鬆安裝 SVN 主程式及相關套件:

yum -y install subversion subversion-perl mod_dav_svn apr apr-util

4. 安裝 Trac 及相關套件

以 yum 輕鬆安裝 Trac 主程式及相關套件:

yum -y install trac clearsilver python-clearsilver

5. 修改網頁配置:

編輯 /etc/httpd/conf/httpd.conf,在最後面加上:

LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
<Location /svn>
  DAV svn
  SVNParentPath /var/svn
  Satisfy Any
# HTTP 用戶驗證
  AuthType Basic
  AuthName "SVN Repository"
  AuthUserFile /etc/svn/account
  AuthzSVNAccessFile /etc/svn/authz
  Require valid-user
</Location>
<Location /trac>
  SetHandler mod_python
  PythonInterpreter main_interpreter
  PythonHandler trac.web.modpython_frontend
  PythonOption TracEnvParentDir /var/trac
  PythonOption TracUriRoot /trac
# HTTP 用戶驗證
# AuthType Basic
# AuthName "Trac Project"
# AuthUserFile /etc/svn/account
# Require valid-user
</Location>

請注意上面註解(#)的部份,因為要用 Trac 的外掛程式來管理用戶的登入,所以就不需要 HTTP 用戶驗證,如果比較喜歡用 HTTP 驗證就把下面四行的註解拿掉即可,並且下面 trac.ini 的設定也要把 “trac.web.auth.LoginModule” 啟用。

6. 建立第一個 SVN 的儲存庫

先在 /var/svn 建立一個名為 “project1″ 的儲存庫:

svnadmin create /var/svn/project1
chown -R apache /var/svn/project1

7. 新增一個管理者帳號

先在 /etc/svn/account 新增一個名為 “admin” 的管理者:

htpasswd /etc/svn/account admin

是的,只要建立這一個管理者用戶即可,稍後可以在 Trac 的外掛程式來新增其它用戶及管理其權限。

8. 建立第一個 Trac 的專案

繼續在 /var/trac 建立一個名為 “project1″ 的專案:

trac-admin /var/trac/project1 initenv

執行時會問你一些東西,你需要輸入 “Project Name” 代表專案名稱,而 “Path to repository” 必須輸入 “/var/svn/project1“,代表 SVN 儲存庫的路徑,其它選項只要按 Enter 使用預設值即可。這裡面的值稍後可以在專案目錄底下的 conf/trac.ini 做修改。

接著仍需將專案的擁有者改為 “apache”:

chown -R apache /var/trac/project1

9. 安裝 Trac 的外掛程式

安裝 Trac 的外掛程式前,需安裝 python-setuptools 及建立 Python Egg 的快取目錄:

cd /tmp
wget http://peak.telecommunity.com/dist/ez_setup.py
python ez_setup.py
mkdir /var/www/.python-eggs
chown apache /var/www/.python-eggs

以 easy_install 安裝五個實用的 Trac 外掛程式 (安裝 for Trac 0.10 的版本):

easy_install http://svn.edgewall.com/repos/trac/sandbox/webadmin
easy_install http://trac-hacks.org/svn/iniadminplugin/0.10
easy_install http://trac-hacks.org/svn/accountmanagerplugin/0.10
easy_install http://trac-hacks.org/svn/tracwysiwygplugin/0.10
easy_install http://trac-hacks.org/svn/svnauthzadminplugin/0.10

這五個外掛程式分別為:

  1. WebAdmin: Trac 的基本管理模組。
  2. IniAdmin: trac.ini 管理。
  3. Account Manager: Trac 的用戶管理。
  4. TracWiki WYSIWYG Editor: 讓 Wiki 編輯器變成 WYSIWYG 編輯器。
  5. Svnauthz File Administration: SVN 的帳號及存取權限管理。

然後繼續編輯 /var/trac/project1/conf/trac.ini,在最後加上:

[components]
#啟用 WebAdmin 外掛程式
webadmin.* = enabled
#啟用 IniAdmin 外掛程式
iniadmin.iniadmin.iniadminplugin = enabled
#啟用 TracWysiwyg 外掛程式
tracwysiwyg.* = enabled
#啟用 SvnAuthzAdmin 外掛程式
svnauthz.* = enabled
#啟用 AccountManager 外掛程式
acct_mgr.api.accountmanager = enabled
acct_mgr.htfile.HtPasswdStore = enabled
#關閉預設的 Http 登入認證方式,改用 AccountManager 的登入認證
trac.web.auth.LoginModule = disabled
acct_mgr.web_ui.LoginModule = enabled
#啟用帳號管理
acct_mgr.admin.AccountManagerAdminPage = enabled
#允許用戶變更密碼、刪除帳號
acct_mgr.web_ui.AccountModule = enabled
[account-manager]
password_format = htpasswd
password_file = /etc/svn/account
password_store = HtPasswdStore

另外,你還要到 [trac] 區塊找到 “authz_file” 及 “authz_module_name” 這兩個參數,分別設為:

authz_file = /etc/svn/authz
authz_module_name = project1

這兩個參數與 SVN 的存取權限有關,”authz_module_name” 要設成 SVN 的儲存庫名稱。

最後,你可能還要再修改 “default_charset” 參數,預設是 “iso-8859-15″,請改成與你 Checkin 到 SVN 儲存庫內的檔案相同文字編碼。

10. Trac 的用戶管理

通常我會先指定 Trac 的管理者、移除訪客的權限、增加一個一般用戶群組,指令如下:

trac-admin /var/trac/project1 permission add admin TRAC_ADMIN
trac-admin /var/trac/project1 permission remove anonymous '*'
trac-admin /var/trac/project1 permission add @user LOG_VIEW FILE_VIEW WIKI_VIEW WIKI_CREATE WIKI_MODIFY SEARCH_VIEW REPORT_VIEW REPORT_SQL_VIEW
trac-admin /var/trac/project1 permission add @user TICKET_VIEW TICKET_CREATE TICKET_MODIFY BROWSER_VIEW TIMELINE_VIEW CHANGESET_VIEW ROADMAP_VIEW MILESTONE_VIEW

在 Trac 裡,用戶與群組的命名及管理方式是沒有什麼區別的,用戶也可以是群組,所以,你也可以把第一個用戶指定給第二個用戶,那第一個用戶就會擁有與第二個用戶一樣的權限。在上面的指令,我新增了一個名稱叫 “@user” 的群組以做為識別,並設定其權限,只要把用戶指定給 @user,就可以使用相同的權限。

11. 設定完成

所有的設定都完成了,請重新啟動 apache:

service httpd restart

現在該裝的都裝好了,Trac 的存取位址為 “http://192.168.1.10/trac“,SVN 的存取位址為 “http://192.168.1.10/svn/project1“。

用瀏覽器連上 Trac 的存取位址,選擇進入 “project1″ 專案後,會顯示 Forbidden 說你沒有讀取權限,因為我們在上一個步驟已經把訪客所有的權限給移除了,現在你只能在網頁的右上角找到 “login” 來登入 “admin” 帳號。

成功登入 admin 之後,你可以從導覽列右邊的 [Admin] 進入管理介面,其中:

  1. General 下的 “Permissions” 是用來管理 Trac 的使用權限
  2. Account 下的 “Users” 可以用來管理 Trac 及 SVN 的用戶 (/etc/svn/account)
  3. Subversion 下的 “Subversion Access” 才是用來管理 SVN 的路徑存取權限及 SVN 的用戶群組 (/etc/svn/authz)

現在你要進行的,除了新增用戶(Users)及修改權限(Permissions)之外,你如果點選導覽列上的 [Browse Source] 系統也會跟你說權限不足,同樣的,現在任何人都還不能存取 SVN 的專案(http://192.168.1.10/svn/project1),因為 “/etc/svn/authz” 這個檔案的內容還是空白的,你必須到 Trac 管理介面的 “Subversion Access” 去讓你的用戶擁有讀寫 “/” 這個路徑的權限才行。

稍後等我有空我再來發表 Trac 的詳細使用方式,大家可以先參考下面的網頁連結。

參考網頁



6 Responses to “SVN + Trac + Apache 完整安裝攻略”

  1. Using Internet Explorer Internet Explorer 7.0 on Windows Windows XP

    您好!我是第一次安裝 trac& svn,我OS使用red hat,
    依照步驟安裝後,用IE 開啟http://myip/trac,卻出現下列錯誤,
    請教是我缺那個步驟嗎?

    Traceback (most recent call last):
    File "/usr/lib/python2.4/site-packages/trac/web/api.py", line 436, in send_error
    data, ‘text/html’)
    File "/usr/lib/python2.4/site-packages/trac/web/chrome.py", line 809, in render_template
    data = self.populate_data(req, data)
    File "/usr/lib/python2.4/site-packages/trac/web/chrome.py", line 719, in populate_data
    d.update({
    File "/usr/lib/python2.4/site-packages/trac/web/api.py", line 212, in __getattr__
    value = self.callbacks[name](self)
    File "/usr/lib/python2.4/site-packages/trac/web/main.py", line 306, in _get_locale
    available = [locale_id.replace('_', '-') for locale_id in
    File "/usr/lib/python2.4/site-packages/trac/util/translation.py", line 328, in get_available_locales
    return [dirname for dirname
    File "/usr/lib/python2.4/site-packages/setuptools-0.6c11-py2.4.egg/pkg_resources.py", line 899, in resource_listdir
    return get_provider(package_or_requirement).resource_listdir(
    File "/usr/lib/python2.4/site-packages/setuptools-0.6c11-py2.4.egg/pkg_resources.py", line 1191, in resource_listdir
    return self._listdir(self._fn(self.module_path,resource_name))
    File "/usr/lib/python2.4/site-packages/setuptools-0.6c11-py2.4.egg/pkg_resources.py", line 1282, in _listdir
    return os.listdir(path)
    OSError: [Errno 2] No such file or directory: ‘/usr/lib/python2.4/site-packages/trac/locale’


  2. Using Internet Explorer Internet Explorer 8.0 on Windows Windows XP

    我也是…
    好像是trac的帳號密碼路徑錯誤
    ….


  3. Using Google Chrome Google Chrome 6.0.472.55 on Windows Windows XP

    謝謝你的文章~ 寫的很詳細^^


  4. Using Google Chrome Google Chrome 6.0.472.63 on Linux Linux

    我用centos安裝時也會,後來發現把babel移除就不會出錯了。
    主要是安裝trac的沒有附上i18n的語系。最後一行才應該是重點,前面的只是trackback。


Trac简介

Trac是Edgewall公司推出的网页界面专案管理软件,尤其擅长软件BUG跟踪方面。

Trac使用Python编程语言开发。在2005年中以前,Trac以GPL发行;直到 0.9 版开始使用修改过的BSD许可证发布。基本上都是属于自由软件的许可证。该软件集成了增强的Wiki功能和版本控制功能,并可通过插件扩展其功能。

由于其插件众多、功能全面,甚至可以与很多商业的CMS系统媲美,安装也不复杂,因此应用也日益广泛。它的ticket管理及工作流插件(http://trac-hacks.org/) 使得它也可以很方便地进行简单的业务协作及流程控制。


[编辑] Trac安装

在Ubuntu下安装Trac十分简单,只需要输入下列命令即可:

sudo apt-get install trac

这样的话,Ubuntu会自动下载安装trac、apache、subversion等必要的软件(建议先行安装apach2、subversion),如果需要trac支持BZR,则还需要用下列命令安装BZR插件:
sudo aptitude install trac-bzr

同样的,如果要其支持GIT,则需要用下列使用安装GIT插件:

sudo aptitude install trac-git

本文以subversion为例,介绍Trac的安装过程。

[编辑] Trac设置

[编辑] 配置Subversion版本库

Subversion 文件仓库可以放在任意位置,其中有两个最常用的位置分别是:/usr/local/svn 和 /home/svn。为了在下面的描述中简单明了,假设您的 Subversion 文件仓库放在 /home/svn/repo,并且项目名称为“trac”。

[编辑] 设置访问Subversion版本库的用户和用户组

设置Subversion版本库的访问权限也有很多方法,通常的做法是,创建一个名为“Subversion”的组,并将该组拥有访问Subversion版本库所在的目录的权限,同时将需要访问Subversion版本库的用户加入到这个组中(在这里添加的是自己的本地用户和Apache2用户):

sudo groupadd subversion
sudo usermod -G subversion -a firehare
sudo usermod -G subversion -a www-data

[编辑] 创建Subversion版本库并设置访问权限

创建Subversion版本库目录十分简单,只需要输入下列命令即可:

sudo mkdir -p /home/svn/repo
sudo chown -R root:subversion /home/svn/repo
sudo chmod -R g+rws /home/svn/repo
sudo svnadmin create /home/svn/repo

[编辑] 配置PostgreSQL数据库

[编辑] 安装并启动PostgreSQL数据库

安装PostgreSQL数据库很简单,只需要:

sudo apt-get install postgresql

为了让trac能访问PostgreSQL,则需要安装python-psycopg2模块:

sudo apt-get install python-psycopg2

启动PostgreSQL服务器daemon(命令中的版本号可能不同):

sudo /etc/init.d/postgresql-8.3 start

[编辑] 添加PostgreSQL用户和数据库

添加PostgreSQL用户和数据库也很简单,只需要输入下列命令:

sudo -u postgres sh (切换到postgres用户)
createuser -A -D -P firehare (创建firehare用户,并提示输入密码,请输入123456以便和下文对应)
Shall the new role be allowed to create more new roles? (y/n) y
createdb -O firehare trac (创建trac数据库)
exit (退出postgres用户,回到正常用户提示行)
[编辑] 添加MYSQL用户和数据库

要支持MYSQL要先安装python-mysqldb 只需输入下列命令: sudo apt-get install python-mysqldb

[编辑] 创建配置Trac环境

Trac用目录和数据库来储存项目信息, 叫做”环境“。一个新的Trac环境是通过使用trac-admin创建出来的,同Subversion一样,Trac环境可以放至在任意位置,由于Trac是个Web应用,是通过Apache来访问的,所以通常将其设在/var/www目录中。具体命令及设置如下:

cd /var/www
sudo mkdir trac
sudo chown -R www-data:www-data trac
sudo -u www-data trac-admin trac initenv
Project Name [My Project]> cmet (在这里输入你的项目名称)
Database connection string [sqlite:db/trac.db]>postgres://firehare:123456@localhost/trac (输入PostgreSQL数据库的位置)
Repository type [svn]>
Path to repository [/path/to/repos]> /home/svn/repo (在这里输入你的项目对应的Subversion地址,注意Trac默认情况下只能访问本机的Subversion仓库,在上面填写地址时不能加"file://"前缀。)
Templates directory [/usr/share/trac/templates]>/usr/share/pyshared/trac/templates

[编辑] 配置Apache

创建Trac环境后,还需要在Apache2中进行相应的配置才能正常使用。配置Trac有两种方式:做为CGI(CGI、WSGI、FCGI)以及使用mod-python。在这里,我们使用apache2-mod-python方式来配置Apache2服务器:

sudo apt-get install libapache2-mod-python libapache2-mod-python-doc
sudo a2enmod python

然后配置虚拟主机站点,当然如果没有虚拟主机的话,也可以将之放在/etc/apache2/sites-available/default文件中,在这里我们还是新建一个虚拟主机:

sudo vi /etc/apache2/site-available/trac
 
<VirtualHost 10.10.3.29>
    ServerName trac.firehare.name
    ServerAdmin ubuntu.firehare@gmail.com
    DocumentRoot /var/www/myproject
    <Location />
        SetHandler mod_python
        PythonInterpreter main_interpreter
        PythonHandler trac.web.modpython_frontend
        PythonOption TracEnv /var/www/trac/
        PythonOption TracUriRoot /
        SetEnv PYTHON_EGG_CACHE /tmp
    </Location>
    <Location /login>
        AuthType Basic
        AuthName "CMET_WZU Trac Server"
        AuthUserFile /var/www/trac/.htpasswd
        Require valid-user
    </Location>
 
    ErrorLog "/var/log/apache2/trac_errors.log"
    CustomLog "/var/log/apache2/trac_accesses.log" common   
</VirtualHost>

设置Trac的访问权限

sudo htpasswd -c /var/www/trac/.htpasswd firehare

将该虚拟主机激活:

sudo a2ensite trac
sudo /etc/init.d/apache2 restart

由于使用了域名,则需要在DNS(域名)服务器上将trac.firehare.name指向本机即可,如果没有DNS服务器,又想测试一个效果,可以在/etc/hosts文档中加入以下配置:

127.0.0.1       trac.firehare.name

[编辑] 测试Trac

接下来就可以通过在浏览器地址栏中输入 http://trac.firehare.name (这个网址由您的虚拟主机名决定)来访问Trac了,



注:要安装最新版请看官网说明.安装方法完全不一样!
 
一、trac 概念
Trac 是用Python写的一个基于Web的事件跟踪系统,它使用WiKi作为文档的格式,Subversion作为版本控制系统。可帮助开发人员进行源码版
本管理、Bug跟踪和讨论。Debian
如果你的系统是Debian则用apt-get install trac命令安装即可,Trac依赖的所有软件包系统会自动安装。安装完成后,就可进行配置了。
Trac可以设置成Standalone服务器,只供本机使用。也可以与Apache等Web服务器集成,如果与Apache集成,则可配置成CGI、FastCGI或
Mod_Python等方式 。
本人文采用:
redhat 9
apache 2 (mod_python)
mysql 5 (mysql_python)
Subversion 1.4
trac 0.10.4
   
二、trac 官网安装方法
   
[url]http://trac.edgewall.org/wiki/TracInstall[/url]
    它所依赖的包:
    *Python, version >= 2.3   //Please keep in mind, that for RPM-based systems you will also need python-devel and python-
xml packages.
   *ClearSilver, version >= 0.9.3    //With python-bindings (./configure --with-python=/usr/bin/python)
   *A web server capable of executing CGI/FastCGI scripts, or Apache HTTPD with mod_python. 
   * Subversion, version >= 1.0. (>= 1.1.x recommended)
   * Subversion SWIG Python bindings (not PySVN).
   *必须的数据库支持(SQLite,PostgreSQL,MySQL(0.10.4以上版本的trac完全支持).
   在安装之前要先确认这些包是否满足trac 的要求。
   我的就是RH9 版本太低了,结果依赖的包超多。
    所有包整理如下:
    python:[url]http://download.chinaunix.net/down.php?id=24851&ResourceID=35&site=1[/url]
    clearsilver:[url]http://www.clearsilver.net/downloads/[/url]
    subversion:
[url]http://liuyu.blog.51cto.com/183345/48326[/url]     mysql_python:[url]http://osdn.dl.sourceforge.net/sourceforge/MySQL-python/MySQL-python-1.2.2.tar.gz[/url]
    mod_python:[url]http://apache.mirror.phpchina.com/httpd/modpython/mod_python-3.3.1.tgz[/url]
三、各个包的安装方法:
    1、python:
       # tar xjvf Python-2.5.tar.gx
       # cd Python-2.5
       # ./configure --with-apxs=/usr/local/apache/sbin/apxs
       # make;make install

    2、clearsilver:
       如果报此错就说明clearsilver没有安装好 TracError: ClearSilver not installed (No module named neo_cgi) 
      
# tar xfz clearsilver-0.10.5.tar.gz  
      # cd clearsilver-0.10.5
      # ./configure --disable-apache --disable-csharp --disable-ruby --prefix=/usr --with-python=/usr/local/bin/python
      #sed -i "s@/usr/local/bin/python@/usr/bin/env python@g" scripts/document.py
      #make || return 1
      #make install
       #cd python
     #PYTHON_SITE=`/usr/local/bin/python -c \
     "import sys; print [path for path in sys.path if path.find('site-packages') != -1][0]"`
     # python setup.py install
     
    3、mysql_python:
        # tar xfz MySQL-python-1.2.1.tar.gz
       # cd MySQL-python-1.2.1
       # python setup.py build
       # python setup.py install

     在安装mysql_python之前一定要装好mysql_client
     如果提示无法找到mysql_config
     vi site.cfg
     #mysql_config = /usr/local/bin/mysql_config
     去掉注释,改为你mysql_config 所在的路径
    4、mod_python:
        
# tar zxvf mod_python-3.3.1.tar.gz
         # cd mod_python-3.3.1
         # ./configure --with-apxs=/usr/local/apache/sbin/apxs
         # make
         # make install        
         在apache配置文件里加入模块
         vi /usr/local/apache2/conf/httpd.conf
         LoadModule python_module modules/mod_python.so
  

四、创建数据库:
   
# cd /usr/local/mysql  
    # mysqladmin create dbname
    # mysql -uroot -p
    > passwd  
    > grant all privileges on dbname.* to dbuser@dbhost identified by 'dbpass';
    > use dbname;
    > ALTER DATABASE DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
    > quit
以本机为例:
    # mysqladmin create trac
    # mysql -uroot -p
    > root(mysql-root 密码)
    > grant all privileges on trac.* to
trac@localhost identified by 'trac';
    > use trac;
    > ALTER DATABASE DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
    > quit
    注:一定要记住这里创建的数据库名(trac),用户名(trac),密码(trac),主机名(localhost)
       因为之后创建trac表的时候需要用到
五、trac的安装及初始化
     # tar zxvf trac-0.10.4.tar.gz
     # cd trac-0.10.4
     # python ./setup.py install
如此处报错请检查以上安装是否有误。
      trac初始化:
     # trac-admin /usr/local/trac initenv    (/usr/loca/trac 目录会自动创建) 
     Project Name [My Project]> test
     Database connection string [sqlite:db/trac.db]> mysql://trac:trac@localhost/trac  //前面创建数据库所用的到信息
     Repository type [svn]>     //这里为空,直接回车
     Path to repository [/path/to/repos]> /usr/local/apache2/svnroot/test   //SVN仓库地址
     Templates directory [/usr/local/share/trac/templates]>       //这里为空,直接回车,事先请确认这个路径
 如果以上配置都正确的话,这步是不会报错的,那么trac 就已经正常安装了。
 剩下的只是apache的配置了。
     
六、配置 trac虚拟主机并启动
   
# vi /usr/local/apache2/conf/httpd.conf  
   在未尾加入 :
    <Location /trac>
    SetHandler mod_python
    PythonHandler trac.web.modpython_frontend
    PythonOption TracEnv /usr/local/trac      //trac 安装目录
    SetEnv PYTHON_EGG_CACHE /tmp
    PythonOption TracUriRoot /trac
    AuthType Basic
    AuthName "test's trac"                
    AuthUserFile /usr/local/apache2/svnroot/test/passwd   //SVN用户密码目录
    Require valid-user
    </Location>
   重启apache  #  service httpd restart
   
[url]http://ip/trac[/url] 就可以看到trac界面啦。。
 

本文出自 “seven” 博客,请务必保留此出处http://liuyu.blog.51cto.com/183345/64054

http://marshal.easymorse.com/


9.13. 安装Trac服务器

Trac是用Python写的一个基于Web的事件跟踪系统,它使用WiKi作为文档的格式,Subversion作为版本控制系统。可帮助开发人员进行源码版本管理、Bug跟踪和讨论。Debian Sarge带的Trac是0.8版本,该版本好象有问题,安装完成后不能创建Trac环境。Sid带是0.9版的,可正常使用。下面以0.9版为例介绍安装过程。

  • 安装和配置

    要安装Trac,需先安装Subversion、SQLite和ClearSilver。详细需求请参考官方网站http://projects.edgewall.com/trac/wiki/TracInstall。如果你使用的是Debian,则用apt-get install trac命令安装即可,Trac依赖的所有软件包系统会自动安装。安装完成后,就可进行配置了。Trac可以设置成Standalone服务器,只供本机使用。也可以与Apache等Web服务器集成,如果与Apache集成,则可配置成CGI、FastCGI或Mod_Python等方式。

    配置成Standalone方式:

    • 创建Subversion库:

      debian~:# svn create /root/subversion
      
    • 初始化Trac环境:

      debian~:# trac-admin /root/trac initenv
      

      /root/trac目录不用事先创建,Trac会自动创建。初始化时,trac-admin程序会问你项目名、数据库连接字串和Subversion库位置这三个参数。如果你的数据库是使用SQLite,则它的连接串是sqlite:db/trac.db,系统已默认指定了。所有初始化参考都会保存在/root/trac/conf/trac.ini文件中。

      [wiki]
      ignore_missing_pages = false
      
      [header_logo]
      src = common/trac_banner.png
      alt = Trac
      height = 73
      link = http://trac.edgewall.com/
      width = 236
      
      [logging]
      log_file = trac.log      #日志文件名,位于trac/log目录下
      log_level = DEBUG        #日志级别,分别是CRITICAL、ERROR、WARN、INFO和DEBUG
      log_type = file          #日志形式,file:生成trac.log日志文件,syslog:通过命名管道/dev/log传送到syslogd
      
      [trac]
      default_charset = iso-8859-15
      ignore_auth_case = false
      permission_store = DefaultPermissionStore
      check_auth_ip = true
      database = sqlite:db/trac.db
      templates_dir = /usr/share/trac/templates
      default_handler = WikiModule
      metanav = login,logout,settings,help,about
      mainnav = wiki,timeline,roadmap,browser,tickets,newticket,search
      repository_dir = /data/subversion
      
      [notification]
      always_notify_owner = false
      smtp_always_cc =
      smtp_password =
      smtp_enabled = false
      smtp_replyto = trac@localhost
      smtp_port = 25
      always_notify_reporter = false
      smtp_server = localhost
      smtp_from = trac@localhost
      smtp_user =
      
      [project]
      url = http://example.com/
      footer =  Visit the Trac open source project at<br /><a href="http://trac.edgewall.com/">http://trac.edgewall.com/</a>
      name = Developer
      descr = My example project
      icon = common/trac.ico
      
      [mimeviewer]
      php_path = php
      enscript_path = enscript
      tab_width = 8
      max_preview_size = 262144
      
      [attachment]
      max_size = 262144
      
      [timeline]
      changeset_show_files = 0
      ticket_show_details = false
      default_daysback = 30
      
      [ticket]
      default_version =
      default_component = component1
      default_type = defect
      restrict_owner = false
      default_milestone =
      default_priority = major
      
      [browser]
      hide_properties = svk:merge
      

      详尽的配置选项说明请参考官方的TracGuide文档。

    • 启动Trac服务:

      debian~:# tracd --port 8000 /root/trac
      

      使用浏览器访问"http://localhost:8000"即可访问Trac系统了。

    Standalone方式只能由本机访问,不能放到网上共享。所以我们一般都是把Trac配置成与Apache服务器集成的形式。这时,我们要配置Apache服务器,告诉它如何执行Trac的CGI程序。如果你的系统是Debian,则在/etc/apache2/conf.d目录下创建一个trac.conf文件,内容如下:

    Alias /trac/chrome/common /usr/share/trac/htdocs
    <Directory "/usr/share/trac/htdocs">
      Order allow,deny
      Allow from all
    </Directory>
    ScriptAlias /trac /usr/share/trac/cgi-bin/trac.cgi
    <Location "/trac">
      SetEnv TRAC_ENV "/data/trac/"
    </Location>
    
    <Location "/trac/login">           #设置Trac用户验证
      AuthType Basic
      AuthName "Trac"
      AuthUserFile /etc/apache2/trac.passwd            #trac.passwd文件用htpasswd2命令生成
      Require valid-user
    </Location>
    
    

    最后不要忘记设置Trac实例目录/data/trac的访问权限,使它能被Apache实例访问,设置方法如下:

    debian:~# chown -R www-data.www-data /data/trac
    

    重启服务器,使用浏览器访问"http://apache_server/trac"即可。

    我们也可以在一台服务器上安装多个trac实例来管理多个Subversion库。假设我们有两个Subversion库,分别是project1和project2,我们就可先用trad-admin命令分别创建两个trac实例,再针对这两个实例配置trac.conf,如:

    Alias /trac/chrome/common /usr/share/trac/htdocs
    <Directory "/usr/share/trac/htdocs">
      Order allow,deny
      Allow from all
    </Directory>
    
    ScriptAlias /trac/project1 /usr/share/trac/cgi-bin/trac.cgi
    <Location "/trac/project1">
      SetEnv TRAC_ENV "/data/trac/project1"
    </Location>
    
    <Location "/trac/project1/login">           #设置Trac用户验证
      AuthType Basic
      AuthName "Trac"
      AuthUserFile /etc/apache2/trac.passwd     #trac.passwd文件用htpasswd2命令生成
      Require valid-user
    </Location>
    
    ScriptAlias /trac/project2 /usr/share/trac/cgi-bin/trac.cgi
    <Location "/trac/project2">
      SetEnv TRAC_ENV "/data/trac/project2"
    </Location>
    
    <Location "/trac/project2/login">           
      AuthType Basic
      AuthName "Trac"
      AuthUserFile /etc/apache2/trac.passwd            
      Require valid-user
    </Location>
    
    

    这样,我们就可用http://servertotrac/trac/project1和http://servertotrac/trac/project2访问两个项目。

    通过FastCGI和Mod_Python方式的配置方法请参考Trac Project网站http://projects.edgewall.com/trac/

  • 管理访问许可

    Trac的许可权限管理简单而有效,它可通过trac-admin命令来管理。用trac-admin可管理用户的许可权限,但用户的管理是通过Apache的htpasswd2命令设置的,根据上面的Apache CGI配置,用户名和密码是存放在/etc/apache2/trac.passwd文件中。下面这个命令可用来列出当前有效的许可权限和已设置的许可权限。

    debian:~# trac-admin /data/trac permission list
    User       Action
    --------------------------
    anonymous  BROWSER_VIEW
    anonymous  CHANGESET_VIEW
    anonymous  FILE_VIEW
    anonymous  LOG_VIEW
    anonymous  MILESTONE_VIEW
    anonymous  REPORT_SQL_VIEW
    anonymous  REPORT_VIEW
    anonymous  ROADMAP_VIEW
    anonymous  SEARCH_VIEW
    anonymous  TICKET_CREATE
    anonymous  TICKET_MODIFY
    anonymous  TICKET_VIEW
    anonymous  TIMELINE_VIEW
    anonymous  WIKI_CREATE
    anonymous  WIKI_MODIFY
    anonymous  WIKI_VIEW
    
    
    Available actions:
     BROWSER_VIEW, CHANGESET_VIEW, CONFIG_VIEW, FILE_VIEW, LOG_VIEW,
     MILESTONE_ADMIN, MILESTONE_CREATE, MILESTONE_DELETE, MILESTONE_MODIFY,
     MILESTONE_VIEW, REPORT_ADMIN, REPORT_CREATE, REPORT_DELETE, REPORT_MODIFY,
     REPORT_SQL_VIEW, REPORT_VIEW, ROADMAP_ADMIN, ROADMAP_VIEW, SEARCH_VIEW,
     TICKET_ADMIN, TICKET_APPEND, TICKET_CHGPROP, TICKET_CREATE, TICKET_MODIFY,
     TICKET_VIEW, TIMELINE_VIEW, TRAC_ADMIN, WIKI_ADMIN, WIKI_CREATE,
     WIKI_DELETE, WIKI_MODIFY, WIKI_VIEW
    

    上面列出的内容是还没进行许可权限设置时的情况,Available actions段的内容就是有效许可权限的列表,每个权限的解析可查询TracGuide中的TracPermission节的内容。其中TRAC_ADMIN许可相当于Linux中的root用户,拥有最高的权限。如果我们要把TRAC_ADMIN许可授予jims用户,则可这样设置:

    debian:~# trac-admin /data/trac permission add jims TRAC_ADMIN
    

    WIKI_ADMIN是WIKI系统的管理员,具有WIKI_CREATE,WIKI_DELETE, WIKI_MODIFY, WIKI_VIEW权限。也就是WIKI页面的创建、删除、修改和查看四种权限,授予方式同上。

    删除用户的许可可用remove关健字,如:

    debian:~# trac-admin /data/trac permission remove jims TRAC_ADMIN
    

    在Trac的权限管理中可以设置组以简化权限配置,下例将设置一个admin组,具有TRAC_ADMIN许可权限,把jims和ringkee两个用户加入到该组中,使他们也具有TRAC_ADMIN许可权限:

    debian:~# trac-admin /data/trac permission add admin TRAC_ADMIN
    debian:~# trac-admin /data/trac permission add ringkee admin
    debian:~# trac-admin /data/trac permission add jims admin
    

    在Trac的用户中,有两个默认的用户,一个是anonymous,表示匿名用户;一个是authenticated,表示所有已通过验证的用户。我们可以把许可权赋予这两个用户,从而简化我们的许可权限配置。

  • 定制Ticket字段

    Trac的Ticket是可定制的,除默认的Priority、Milestone、Component等字段之外,我们还可增加自已的字段。方法是在trac.ini里增加[ticket-custom]配置段。配置语法如下:

    字段名(FIELD_NAME) = 字段类型(TYPE)
     字段名选项(FIELD_NAME.OPTION) = 值(VALUE)
     ...
    

    下面是有效的字段类型和选项说明:

        * text: A simple (one line) text field.
              o label: Descriptive label.
              o value: Default value.
              o order: Sort order placement. (Determines relative placement in forms.) 
        * checkbox: A boolean value check box.
              o label: Descriptive label.
              o value: Default value (0 or 1).
              o order: Sort order placement. 
        * select: Drop-down select box. Uses a list of values.
              o options: List of values, separated by | (vertical pipe).
              o value: Default value (Item #, starting at 0).
              o order: Sort order placement. 
        * radio: Radio buttons. Essentially the same as select.
              o label: Descriptive label.
              o options: List of values, separated by | (vertical pipe).
              o value: Default value (Item #, starting at 0).
              o order: Sort order placement. 
        * textarea: Multi-line text area.
              o label: Descriptive label.
              o value: Default text.
              o cols: Width in columns.
              o rows: Height in lines.
              o order: Sort order placement. 
    

    下面是一些示例:

    [ticket-custom]
    
    test_one = text
    test_one.label = Just a text box
    
    test_two = text
    test_two.label = Another text-box
    test_two.value = Just a default value
    
    test_three = checkbox
    test_three.label = Some checkbox
    test_three.value = 1
    
    test_four = select
    test_four.label = My selectbox
    test_four.options = one|two|third option|four
    test_four.value = 2
    
    test_five = radio
    test_five.label = Radio buttons are fun
    test_five.options = uno|dos|tres|cuatro|cinco
    test_five.value = 1
    
    test_six = textarea
    test_six.label = This is a large textarea
    test_six.value = Default text
    test_six.cols = 60
    test_six.rows = 30
    
  • 备份和恢复

    Trac系统的备份和恢复也可使用trac-admin工具来完成,还可支持热备份。备份命令如下:

    debian:~# trac-admin /data/trac hotcopy ~/backup 
    

    执行该命令时,Trac会自动锁住SQLite数据库,并把/data/trac目录拷贝到~/backup目录。恢复备份也很简单,只需停止Trac进程,如Apache服务器或tracd服务器。接着把~/backup整个目录恢复回/data/trac目录就可以了。

  • 软件更新

    当有新版的Trac软件推出时,为了使用新的功能和减少Bugs,我们需把旧版本的Trac系统升级到新版本。在Debian中系统,Trac软件包的安装脚本会自动帮我们完成升级,但了解手动升级方法可使我们对Trac软件的结构有更深的认识,所以我在这里也简单介绍一下如何手动升级Trac软件包。

    • 为了减少软件冲突,最好把旧版软件包的程序删除:

      debian:~# rm -rf /usr/lib/python2.3/site-packages/trac
      debian:~# rm -rf /usr/share/trac
      
      [Note] 
      /data/trac实例目录不能删除。
    • 升级软件包,下载最新的Trac软件包,并安装:

      debian:~/inst/trac-0.9.2# python setup.py install 
      
    • 升级实例:

      debian:~# trac-admin /data/trac upgrade
      
    • 升级文档:

      debian:~# trac-admin /data/trac wiki upgrade
      




使用trac进行项目管理

正在使用trac进行知识管理和项目管理,整理一下资料,以便分享。

国内关于trac详细使用介绍的不多,下文介绍的不错。红色的注意是我一些使用的经验补充。

trac概述

概念

开发流程

增加新特性

修正Bug

概念

  • wiki文件, 功能說明, 目标方向 等等.
  • ticket:用于Bug报告、系统增强请求。
    • 报告者
    • 类型(缺陷?增强?...)
    • 相关项目哪个部分(Component)
    • 相关项目哪个版本
    • 关键字,便于检索
    • 优先级
    • 相关哪个待发布版(blocking that release)
    • 属于谁:谁负责解决
    • Cc:逗号分隔的用户或电子邮件地址,他们需要获得ticket变更的通知
    • 解决方案:总结为何此ticket被关闭
    • 状态:该ticket所处的状态
    • 简述:简述该ticket
    • 详细描述
  • Roadmap:列出系统中未来的发布,与这些发布相关的tickets 。依照 Ticket 设定, Ticket 可以指向某個 Milestone, 以便追踪目前完成进度. 项目进度分成哪些阶段, 可以看目前进度狀況, 也可以确认是否有走错方向。
  • Milestones:系统(待)发布版。Milestones可以给出描述和目标日期。
  • Timeline:可以查看何时有修改,被谁修改,修改了什么东西。按发生的顺序,列出所有trac中已发生的事件(以事件简述、适用哪里、事件触发者的形式)。可以看看最近有哪些頁面被更新过, 可以快速跟上进度.下述类型的事件被列出:
    • Wiki页事件:创建和改变
    • Ticket事件:创建和解决/关闭(以及其他改变)
    • 源代码改变事件:Repository check-ins
    • Milestone:里程碑版相关变动

·         Browse Source: 可以看到修改记录 版本比对 等信息.

·         View Tickets - 看现在有哪些 Tickets, 依照下述来分类Tickets. 看目前有哪些 Ticket, 看哪些还沒有完成(常用: My Tickets, Active Tickets)

  •  
    • Active Tickets - 目前有哪些 Tickets 是 Active 的
    • Active Tickets by Version
    • Active Tickets by Milestone - 靠 Milestone 來分 Active Tickets
    • Assigned, Active Tickets by Owner
    • Assigned, Active Tickets by Owner (Full Description)
    • All Tickets By Milestone (Including closed) - 列出所有 Tickets
    • My Tickets - 列出属于自己的 Tickets
    • Active Tickets, Mine first - 列出所有 Active Tickets, 依照重要性排列
    • New Ticket - 建立新的 Ticket

·         New Ticket: 於 Roadmap 做好阶段性的安排后, 再依阶段性任务做更詳細的安排, 並分小项目來开 Ticket.(Bug 可以当 Milestone 來列, 也可以当 Ticket 來慢慢开)

 http://tech.idv2.com/bookmark/

开发流程

增加新特性

  1. Wiki上开一页的新特性提议列表
  2. 开发者根据上表,Wiki上开一页新特性计划实现列表
  3. 新建ticket(类型为enhancement)
  4. ticket附加到milestone
  5. ticket指派给一个开发者,该开发者负责解决此ticket
  6. (版本管理程序中)创建一个分支(每个ticket对应一个分支
  7. 进行代码修改
  8. (版本管理程序中)融合
  9. 解决ticket

说明:对于新增特性的ticket,分支的命名可为:feature-ticket号-特性描述,并留下类似评论:“Branched to add xxx. See ticket #nn. ”。新的特性完成后,则融合并留下类似评论:“Addresses ticket #nn by implementing xxx.”。当条件成熟时,把那个支打上标签,进行发布。

修正Bug

  1. 新建ticket(类型为defeat)
  2. <重复ticket?>——>解决为“duplicate”,增加评论:“该ticket为xxx的重复”
  3. <含有足够的信息进行处理?>——>要求报告者提供更多信息
  4. <可重现?>
  5. 分优先级
  6. <是否修正之?> 否——>解决为“wontfix”
  7. 附加到合适milestone上
  8. 指派给开发者修正
  9. (版本管理程序中)在相关的发布标记的支中分支
  10. 进行修改
  11. (版本管理程序中)融合相关修改到对应支中
  12. 解决ticket

说明:对于解决Bug的ticket,分支命名为bug-“ticket号”,留下类似评论:"Branched to fix ticket #nn – Bug的描述."

trac链接

Trac链接是Trac的一个基础特性。通过它,可以轻松地在支持任何wiki语法之处,超链接系统的不同实体——任务单(tickets)、报表(reports)、变更集(changesets)、wiki页面、里程碑(milestones)和源代码文件。 Trac链接通常以type:idid代表实体的数字、名字或路径)的形式,但一些经常用到的实体有缩记符号。

适用场合

trac链接的高级用法

相对链接

wiki内的互链

trac互链

适用场合

可在如下场合使用:

  • 源代码(Subversion)提交的日志信息
  • Wiki页
  • 任务单(tickets)、报表(reports)和里程碑(milestones)的详细描述。

还有其他明确的标明支持wiki语法的文本域。 一些例子:

  • 任务单(tickets):#1ticket:1
  • 任务单评论(ticket comments):comment:ticket:1:2
  • 报表(reports):{1}report:1
  • 变更集(Changesets):!r1, ![1], changeset:1 或 (有限使用)![1/trunk], changeset:1/trunk, [2:5/trunk]
  • 修订日志(revision log):r1:3, [1:3]log:@1:3,log:trunk@1:3
  • 差异(diffs) (需要Trac版本0.10以上):diff:@1:3, diff:tags/trac-0.9.2/wiki-default//tags/trac-0.9.3/wiki-defaultdiff:trunk/trac@3538//sandbox/vc-refactoring@3539
  • Wiki页面:CamelCasewiki:CamelCase
  • 父页面:[..]
  • 里程碑(milestones):milestone:1.0
  • 附件(attachment):attachment:ticket:944:attachment.1073.diff
  • 软件版本仓库中的文件:source:trunk/COPYING
  • 软件版本仓库中文件的某个特定修正版: source:/trunk/COPYING@200
  • 软件版本仓库中文件的某个特定修正版的某行:source:/trunk/COPYING@200#L25

trac链接的高级用法

相对链接

创建指向页面的某个锚(anchor),使用"#",比如 [#Relativelinks relative links] 提示:当你移动鼠标到段的标题上,一个“¶”字符将会显现。这是一个只向该段的链接,用它可以拷贝该段的锚(anchor)。 创建指向一个子wiki页面,只要使用“/”,比如 WikiPage/SubWikiPage 或 ./SubWikiPage 在子wiki页面创建指向父wiki页面的链接,使用“..”,比如 [..] 链接到兄弟页面,使用“../”,比如[../Sibling see next sibling]

注意:如果是中文,连接名前要加个‘a',比如有一段名为:“第一段”,在后面对其引用为[#a第一段],直接输入中文有问题。如果想要此链接显示中不带a,改为[#a第一段 第一段]。

wiki内的互链

其他前缀可以任意定义,用来指向其他web应用的资源。这些前缀的定义和指向web应用的URL在此说明。

trac互链

trac互链是专门面向链接其他trac项目中的资源。 任何类型的trac链接可以写成trac环境和实际指向那个trac环境资源的引用,之间用冒号隔开。

注意:trac在显示页面时对页面进行翻译,将其中对应标记的记号替换为超链接,即意味着被不是在trac中写的,但是被trac引用的文档中的标记都会被翻译,例如如果在版本控制的commit注释中的文字如果按照wiki格式也会被解释,故可以在commit注释中与trac的wiki或者ticket等相关联。

新建wiki

新建wiki页的步骤

wiki页的命名

CamelCase

 

新建wiki页的步骤

  1. 决定wiki页的名字。
  2. 编辑某个存在的wiki页面 (或其他支持 Wiki语法的资源),增加一个只向你新的wiki页的链接。保存更改。
  3. 点击指向你新wiki页的链接。Trac将会显示一个 "describe PageName here" 的信息。
  4. 点击 "Edit this page" 按钮,来增加、编辑新wiki页的内容。保存更改。
  5. 现在,你的新wiki已经发布了。

你也可以在页面顶端的搜索框,输入CamelCase方式的名字,来跳过第二步。但是当心,这样做,该wiki页将成为“孤儿”页,直到你在别的地方建立指向它的链接。 (在浏览器地址栏中,直接输入URL:dev.lemote.com/code/{当前项目名}/wiki/新的wiki页名称,也可以达到类似的效果)

wiki页的命名

Wiki页命名一般遵循CamelCase规范。Wiki文本中, 任何符合CamelCase形式的单词自动转换为一个指向以此单词命名的wiki页。 CamelCase的wiki页名必须符合以下规则:

  1. 名子必须只能含有字母。不能含数字、空格、标点符号或下划线。
  2. 名字必须至少含两个大写字母。
  3. 名字首字母必须大写。
  4. 每个大写的字母其后必须是一个以上的小写字母。
  5. 在wiki页命名中,可以使用斜杠(/)(可能是代表一种层次关系)

如果你想创建不遵循CamelCase规则命名的wiki页,你可以使用如下语法:

 注意:中文几乎只能采用如下方法。

  • [wiki:Wiki_page], [wiki:ISO9000]
  • [wiki:"Space Matters"] 这个页名内含空格
  • 或更简单的: ["WikiPageName"]s (!MoinMoin的内部自由链接风格)

从Trac 0.11版开始,可以指定到Wiki页的一个特定版本,比如:http://dev.lemote.com/code/demo/wiki/WikiStart?version=1 另外,可以在Wiki名后尾随一个锚(anchor),来指向wiki页的某个特定段。是否有锚,可以简单的通过移动鼠标指针到段头,看到其后出现的“¶”标志,也可以明确指定。 

CamelCase

CamelCase是最初的wiki创建超链接的规范,额外要求大写的字母其后为小写字母。于是,“AlabamA” 与 “ABc”不是链接。

自定义Wiki行为

某些人不喜欢通过CamelCase进行链接这种方式。 虽然Trac仍旧忠实的遵循最初wiki风格,但其提供了一组满足不同喜好用户的链接方式。

  •  
    • 一种方式 ([wiki]中的ignore_missing_pages) 是,当链接是CamelCase方式时,简单地忽略不存在的wiki页,而非此单词灰显后跟问号。
    • 另一种方式([wiki]中的split_page_names),显示时,在CamelCase风格的链接的多个单词间自动插入空格符。
    • 明确地创建Wiki链接也很容易,见wiki页的命名
    • 另外,Wiki格式化显示可以在某些地方禁用。 (例如显示提交日志时)

 http://blog.csdn.net/ren911/article/details/5314802

1) 基本概念

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 类型,如 PatchTranslateTest,当然这只是举例说明,还是需要根据项目的具体需求来进行定制。

  大多使用 Trac 进行项目管理都有一个中心,某些团队以 Milestone 为中心,有些以 Version 为中心,有些以 Component 为中心,最后就是以 Ticket 为中心的,其松散程度是逐步增加的。

  Ticket 是 Trac 中最核心的单元,整个 Trac 都是围绕 Ticket 进行的,在应用 Trac 时,Ticket 可以让团队中的人分工更为明确,比如市场调查可以只负责 Create Ticket、Edit wiki,开发人员、测试人员根据自己的能力各自完成自己所属的 Ticket,最后以完成某个中心为终结;通过里程碑,管理者也可以更快,更直接的了解到项目进度从而制定相应计划;通过 Wiki ,新进成员也可以更快速的融入项目。

  不过这些都是以真正的应用 Trac 到项目的开发、管理、测试为前提。

  很多应用 Trac 进行管理的人都说:现在最兴奋的事,不是完成一个一个的功能,是关闭一个又一个的 Ticket,看着里程碑逐渐接近 100%,工作热情也特别高涨。

2) 权限管理

  Trac 中的权限划分的很为细致,并且有用户组的概念,但是 Trac 并不包含用户信息,通常都是与 Apache 集成权限认证来获得用户信息。

  当创建了一个  Trac 环境时,默认权限分布如下:

User           Action
------------------------------
anonymous      BROWSER_VIEW
anonymous      CHANGESET_VIEW
anonymous      FILE_VIEW
anonymous      LOG_VIEW
anonymous      MILESTONE_VIEW
anonymous      REPORT_SQL_VIEW
anonymous      REPORT_VIEW
anonymous      ROADMAP_VIEW
anonymous      SEARCH_VIEW
anonymous      TICKET_VIEW
anonymous      TIMELINE_VIEW
anonymous      WIKI_VIEW
authenticated  TICKET_CREATE
authenticated  TICKET_MODIFY
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 选项,可以以可视化的方式更改权限信息。

 

3) 集成

  有了趁手的工具,我们当然愿意这个工具与旧有工具完美结合,以产生更高的价值。

  好比 .Net 下的 TDD 拥有了 TestDriven.Net,提高的生产力可不是几句话就能够形容的,我也极度期盼 .Net 能够提供与 Trac 集成的插件。

  相比之下,我极羡慕 eclipse 3.3 中集成的 Mylyn,可以很方便的与 Bugzilla,JIRA,Trac 集成;好吧,我承认,我希望有“逸士”能够造一个 NMylyn 或者 Mylyn.Net 供我们使用。

  Trac 通过 xml-rpc 提供交互接口,也许某天,我会来做这个“逸士”;不过,似乎很难。

 

4) 推荐资料

  这里 是台湾某教师为学生制作的 Trac PPT 教程,较浅显易懂,各位可以参考一下。

  这里 是台湾的某人写的一系列关于 Trac 的文章,可以参考一下。

 

5) 结束语

     如果您所在的公司仍然处于项目管理混乱,失败率高的情况,我极力推荐您使用 Trac、Bugzilla 等 ITS 进行管理。

     本人才疏学浅,加之时间仓促,Trac 只能介绍到这里,如果您还有什么不懂得地方,请联系我,我将尽力帮助你。
     过段时间我会放出自己基于 Trac0.11b1 制作的 EasyTrac,简化 Trac 的部署,供需要的人使用。

     警告 : 本文所使用的是 Trac 0.11b1 版,不保证对文章内容对其他版本适用。
      同样也不推荐你在实际环境部署使用该beta版,如出现任何问题,概与本人无关。
  如果你存在任何有关问题,请 mail 我 : rszealic{at}gmail.com
     版权 : 保留对本文的一切修改、发布等权力。任何人想要转载本文部分或全部内容时,必须保留包括作者 Zealic、出处、版权,共三项信息。对本文的参考引用,则不受限制。

 

参考)

Trac Usage:

http://wiki.woodpecker.org.cn/moin/TracUsage

Trac 中的 Ticket系统:
http://www.cnblogs.com/HanN1984/archive/2007/08/09/840575.html

Bugzilla 培训手册--操作说明:
http://liuyu.blog.51cto.com/183345/49829

Why Programs Fail:系统化调试指南:
http://book.csdn.net/bookfiles/306/

其他:
http://www.cnblogs.com/HanN1984/archive/2007/08/09/840575.html
http://tech.idv2.com/2007/02/11/trac-install-windows/

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值