我怎样才能最好地利用Trac?

时间:2008-10-10 23:32:35

标签: svn project-management trac

我在Subversion实现之上安装了一个Trac项目(很容易感谢Webfaction的控制面板),但现在我有配置工作要做。考虑到这一点,是否有 easy 方法在Trac中执行以下操作:

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

此外,我有兴趣知道是否有任何高度推荐的插件,我会抱歉忘了安装。

7 个答案:

答案 0 :(得分:17)

我不建议使用相同的Trac项目来跟踪开发任务并显示客户进度。您希望能够坦诚地使用您的开发票据,评论等。客户可以专注于错误的事情并错误解释您在票证中添加的数据。我建议为客户提供一个包含高级任务的单独项目,并仅显示这些任务的进度,而不是细节。

答案 1 :(得分:8)

1)高级进度指示器:

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

  • 里程碑标题
  • 简短说明
  • 里程碑到期的日期
  • 到那时还剩多少时间(或者你的安排多久)
  • 为该里程碑分配了多少张门票,以及有多少门票被关闭,可视化为一个漂亮的绿色进度条。这个栏是根据每张票具有相同重量的假设而得出的,这可能会产生误导。

您可以通过客户只能访问此视图的方式来限制您的权限。

根据您与客户之间的关系,您可能希望授予他创建新票证的权限(权限TICKET_CREATE),这应该是可能的,而不会授予他对其他票证的读取权限(TICKET_VIEW和TICKET_MODIFY)。对不起,但我目前无法测试这是否真的有效,也许有人可以对此发表评论。

2)每日摘要报告

trac为您提供所有可以想到的RSS源。应该可以从中生成每日报告,或者您只需告诉RSS客户端每天检查一次Feed。

如果票证发生变化,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 'Tickets that you accepted' 
       ELSE 'Tickets that were assigned to you, please accept or reassign' 
      END) 
     ELSE 'Tickets, that have your name in the cc' 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)

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

  • 您拥有并接受的门票
  • 分配给您的门票,但您尚未接受
  • 在cc中有你的门票(没有那个查询你不会得到的奇特之处)

查询可能看起来很可怕,但它们是对已存在的查询的简单修改。您不必破解trac源代码,Web界面允许您编辑查询。

<强>插件

如果你使用eclipse,我推荐XML RPC plugin。它可以与Mylin紧密集成。 (我认为即使没有插件也可以进行基本集成),因此您的开发人员可以在eclipse中执行许多任务,而无需切换到trac Web界面。

(如果你使用eclipse,但不知道mylin,你应该看看它。你可以在没有任何配置的情况下测试它,因为它带有大多数eclipse发行版,可以独立工作而不需要trac。)

答案 2 :(得分:5)

就其他插件而言,我们安装了TocMacro,XmlRpcPlugin,WysiwygPlugin和TracRedirect。特别是,WYSIWYG插件非常适合鼓励技术人员在wiki中维护自己的文档 - 你甚至可以从MS Word中获得C&amp; P,同时保留格式,这有助于。

如果您自己的工作流程没有被Trac的默认值很好地表示,请查看Trac为您提供的自定义故障单工作流程。这使我们能够在工作流程中添加代码审查和集成测试步骤。

我建议您使用某些中央身份验证框架对Trac服务器进行身份验证。我们运行一个带有auth凭证的LDAP树,我们所有的内部系统都使用它 - 包括trac,svn,samba,openvpn等。

答案 3 :(得分:3)

@Dave Dunkin是对的。使用Trac供内部使用,并使用Basecamp之类的系统为您的客户提供项目中正在发生的事情的高级概述。

答案 4 :(得分:3)

如果是库存安装,则数据库只是一个SQLite3,因此您可以轻松编写脚本来获取“安全”信息,例如票证数量,或者为什么不是其中一个报告。这样,只要票证名称合适,您就可以自由讨论。还可以使用修订版,里程碑,wikipages,标签(如果您使用该插件)。

答案 5 :(得分:3)

您可能会从匿名用户撤消除ROADMAP_VIEW之外的所有权限,但这可能会有点高级别,不是吗? AFAIK目前不支持单个故障单或评论级别的访问控制。有关trac权限的详细信息,请参阅http://trac.edgewall.org/wiki/TracPermissions

答案 6 :(得分:3)

如其中一条评论所述,您无法根据用户限制故障单或评论访问权限。寻找或创建外部报告系统是您最好的选择。

基于Trac经验的一些事情:

  1. 创建自定义workflow是 相当直接的froward。指某东西的用途 GraphViz是一个巨大的帮助 沟通状态和行动。如果您需要更复杂的状态交互,那么进一步扩展内置功能的工作流插件(如AdvancedTicketWorkflowPlugin)并不难做到。

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

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

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

    并且维基页面可以包含:

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