我如何最好地利用Trac?

16

我有一个Trac项目,安装在Subversion上(由于Webfaction的控制面板很容易做到),但现在我需要进行配置工作。考虑到这一点,是否有以下Trac中的简单方法:

1)确保客户只能看到高级别的进度指示器。
2)提供关于票务、测试和任务每日摘要报告。

此外,我想知道是否有任何高度推荐的插件,如果我忘记安装它们会遗憾。

7个回答

17

我不建议在同一个Trac项目中既追踪开发任务,又展示给客户进展情况。您希望能够坦诚地处理开发工单、评论等。客户可能会关注错误的事情并误解您在工单中提供的数据。我建议为客户提供一个单独的项目,其中包含高级任务,并只显示这些任务的进度,而不是细节。


那么没有办法限制客户端的视图来实现这个吗? - torial
我认为你不能限制用户只查看某些工单或某些工单的评论。 - Dave Dunkin
似乎违反了DRY(不要重复自己)原则。在两个地方维护数据会导致不一致和丢失的问题。 - Erik Funkenbusch
Trac是开源的,似乎添加限制查看哪些票据的功能非常容易。 - Eli
@Eli - 是的,你可以添加它,但我认为这不会很容易。你必须确保覆盖所有查看工单的不同方式(报告、宏等),并且可用性很难正确处理。 - Dave Dunkin
@Mystere Man - 我认为这并不违反DRY原则,因为我的票据中的信息与我想要传达给客户的信息非常不同。我希望客户看到的更多是路线图之类的内容,但即使这样也可能会产生误导。这完全取决于客户。 - Dave Dunkin

8

1) 高级进度指示器:

路线图选项卡提供了一种高级进度指示器。它列出了所有的里程碑,并为每个里程碑显示以下内容:

  • 里程碑标题
  • 简短描述
  • 里程碑到期日期
  • 距离到期时间还有多少时间(或者你比计划落后了多久)
  • 分配给该里程碑的票数以及已关闭的票数,可视化为漂亮的绿色进度条。该条是基于每张票的重量相同这一假设绘制的,这可能会产生误导。

你可以限制权限,使你的客户只能访问此视图。

根据你和你的客户之间的关系,你可能希望授予他创建新票(TICKET_CREATE 权限)的能力,而无需给他读取其他票(TICKET_VIEW 和 TICKET_MODIFY)的权限。很抱歉,我目前无法测试是否真正有效,也许有人可以对此发表评论。

2) 每日摘要报告

Trac 为你提供了几乎一切的 RSS 订阅源。你可以从中生成每日报告,或者只需告诉你的 RSS 客户端每天检查一次即可。

Trac 还具有通过电子邮件通知票据所有者其票据已更改的能力,但这将立即发生,而不是作为每日摘要。你可以对票据进行评论,有时我们会将它们用作讨论板或邮件列表,在这种情况下立即收到通知很好。

其他配置

在我使用 Trac 做的每个项目中,我都会创建一个自定义查询来列出没有任何所有者的所有票据:

SELECT p.value AS __color__,
   owner AS __group__,
status,
   id AS ticket, summary, component, milestone, t.type AS type, time AS created,
   changetime AS _changetime, description AS _description,
   reporter AS _reporter
  FROM ticket t
  LEFT JOIN enum p ON p.name = t.priority AND p.type = 'priority'
  WHERE status = 'new' AND (owner = '' OR owner = 'somebody'  OR owner = 'None' )
  ORDER BY owner, p.value, t.type, time

每个票据可能有一个所有者和几个 cc 字段中的人,但我只列出了那些你是所有者的我的票据的报告。为了克服这个问题,我添加了一个类似于以下内容的查询:

SELECT p.value AS __color__,
   (CASE owner WHEN '$USER' THEN 
     (CASE status 
       WHEN 'assigned' 
       THEN '您接受的工单' 
       ELSE '分配给您的工单,请接受或重新分配' 
      END) 
     ELSE '抄送给您的工单' END) 
     AS __group__,
   id AS ticket, summary, component, version, milestone,
   t.type AS type, priority, time AS created,
   changetime AS _changetime, description AS _description,
   reporter AS _reporter
  FROM ticket t
  LEFT JOIN enum p ON p.name = t.priority AND p.type = 'priority'
  WHERE t.status != 'closed' AND (owner = '$USER' OR cc like '%$USER%')
  ORDER BY owner, (status = 'assigned') DESC, p.value, milestone, t.type, time

(该代码适用于Trac 0.11b版本)

这是我最喜欢的工单报告。它将工单分为三类:

  • 您拥有并已接受的工单
  • 分配给您但尚未接受的工单
  • 抄送给您的工单(如果没有这个查询,您可能会错过这个漂亮的功能)

这些查询看起来可能有点吓人,但它们只是对已经存在的查询进行了简单的修改。您不需要修改Trac源代码,Web界面允许您编辑查询。

插件

我推荐使用XML RPC插件,如果您使用Eclipse。它可以与Mylin进行紧密集成。(我认为即使没有插件,基本的集成也可以工作),这样您的开发人员就可以在Eclipse中完成许多任务,而不必切换到Trac Web界面。

(如果您使用Eclipse,但不知道Mylin,您应该看一下它。您可以在不进行任何配置的情况下测试它,因为它随附于大多数Eclipse发行版,并且可以作为独立的工具使用,无需Trac。)


5
关于额外的插件,我们安装了TocMacro、XmlRpcPlugin、WysiwygPlugin和TracRedirect。特别是WYSIWYG插件非常适合鼓励不太懂技术的员工在wiki上维护自己的文档-您甚至可以从MS Word中复制并保留格式,这很有帮助。
如果您自己的工作流程没有被Trac默认支持,那么请查看Trac提供的自定义工作流程。这使我们能够将代码审查和集成测试步骤添加到工作流程中。
我建议您让Trac服务器对某个中央身份验证框架进行身份验证。我们运行一个包含认证凭据的LDAP树,所有内部系统都使用它-包括trac、svn、samba、openvpn等。

3
你可能想从匿名用户中撤回所有权限,除了ROADMAP_VIEW,但这可能会太高级了,不是吗?据我所知,目前不支持在单个票证或注释级别上进行访问控制。有关Trac权限的详细信息,请参见http://trac.edgewall.org/wiki/TracPermissions

3

@Dave Dunkin是正确的。在内部使用Trac,使用像Basecamp这样的系统为客户提供项目的高级概述。


有没有Basecamp的免费替代品? - torial
Basecamp对于小型项目是免费的。有一个反37signals网站列出了Basecamp的替代选择 - http://www.whybasecampsux.org/#alternatives (这个网站很有趣,呵呵) - ceejayoz
您还可以拥有两个Trac实例,一个是公共面向的,另一个是内部的。在这里运行良好。 - agnul

3
如果是默认安装,数据库只是一个SQLite3,因此您可以轻松编写脚本来获取“安全”的信息,比如票数,或者为什么不是其中的一份报告。这样,只要票名没有问题,您就可以自由讨论。修订、里程碑、维基页面和标签(如果您使用该插件)也可用。

3

如在评论中提到的那样,您无法根据用户限制票证或评论访问。找到或创建外部报告系统是最好的选择。

基于Trac的经验有几点需要注意:

  1. 创建自定义工作流程非常简单。使用GraphViz对于传达状态和操作非常有帮助。如果需要更复杂的状态交互,可以使用工作流插件(例如AdvancedTicketWorkflowPlugin)进一步扩展内置功能。

  2. 对于自定义报告,您可以编写带有命名参数的SQL查询,然后从wiki页面链接到这些查询:

例如,查询可以包含像这样的WHERE子句:

WHERE datetime(t.changetime, 'unixepoch') >= datetime('now','-$DAYS days')

而维基页面可以包含以下内容:

Show activity for last [http://server.com/trac/report/9?DAYS=8 8] days.

我是trac的新手,但是我发现你可以使用自定义票务查询trac.edgewall.org/wiki/TracQuery以及基于Authz的Wiki控制trac-hacks.org/wiki/WikiRbacPatch来限制用户基于票务的查看。我是对的吗? - amit kumar
我从未使用过WikiRbacPatch,但根据文档,增加的访问控制只适用于Wiki页面。我不认为此补丁会影响自定义查询的结果。 - Bob Nadler

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接