我在 Subversion 实现之上安装了一个 Trac 项目(由于 Webfaction 的控制面板很容易做到),但现在我有配置工作要做。考虑到这一点,是否有简单的方法可以在 Trac 中执行以下操作:
1) 确保客户只能看到高级别的进度指示器。
2) 提供关于工单、测试和任务的每日总结报告。
另外,我很想知道是否有任何强烈推荐的插件,我很抱歉忘记安装。
我在 Subversion 实现之上安装了一个 Trac 项目(由于 Webfaction 的控制面板很容易做到),但现在我有配置工作要做。考虑到这一点,是否有简单的方法可以在 Trac 中执行以下操作:
1) 确保客户只能看到高级别的进度指示器。
2) 提供关于工单、测试和任务的每日总结报告。
另外,我很想知道是否有任何强烈推荐的插件,我很抱歉忘记安装。
我不建议使用相同的 Trac 项目来跟踪开发任务并显示客户进度。您希望能够坦诚地对待您的开发票、评论等。客户可能会专注于错误的事情并误解您放入票中的数据。我建议为客户提供一个包含高级任务的单独项目,并且只显示这些任务的进度,而不是细节。
1) 高级进度指标:
路线图选项卡为您提供了一种高级进度指示器。它列出了所有里程碑,并为每个里程碑向您显示:
您可以限制您的权限,使您的客户只能访问此视图。
根据您和您的客户之间的关系,您可能希望让他能够创建新工单(权限 TICKET_CREATE),这应该是可能的,而无需授予他对其他工单(TICKET_VIEW 和 TICKET_MODIFY)的读取权限。抱歉,但我目前无法测试这是否真的有效,也许有人可以对此发表评论。
2) 每日总结报告
trac 为您提供您能想到的所有内容的 RSS 提要。应该可以从中生成每日报告,或者您只需告诉您的 RSS 客户端每天检查一次提要。
Trac 还可以通过邮件通知票证所有者如果票证发生变化,但它会立即发生,而不是作为每日摘要。您可以对工单发表评论,有时我们会将它们用作讨论板或邮件列表,在这种情况下,最好立即收到通知。
其他配置
在我使用 trac 进行的每个项目中,我都会创建一个自定义查询来列出所有无人拥有的票证:
选择 p.value 作为 __color__, 所有者 AS __group__, 地位, id AS 工单、摘要、组件、里程碑、t.type AS 类型、AS 创建时间、 更改时间 AS _changetime,描述 AS _description, 记者作为_reporter FROM 票 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 字段中,但我的工单的报告只列出了您是所有者的那些。为了克服这个问题,我添加了一个这样的查询:
选择 p.value 作为 __color__, (案例所有者 WHEN '$USER' THEN (案例状态 何时“分配” THEN '您接受的门票' ELSE '已分配给您的票,请接受或重新分配' 结尾) ELSE '门票,cc 中有你的名字' END) 作为__组__, id AS 票证、摘要、组件、版本、里程碑、 t.type AS 类型、优先级、AS 创建时间、 更改时间 AS _changetime,描述 AS _description, 记者作为_reporter FROM 票 t LEFT JOIN enum p ON p.name = t.priority AND p.type = 'priority' WHERE t.status 'close' AND (owner = '$USER' OR cc like '%$USER%') ORDER BY owner, (status = 'assigned') DESC, p.value, 里程碑, t.type, time
(此代码适用于 trac 0.11b)
这是我最喜欢的票务报告。它将门票分为三个等级:
这些查询可能看起来很吓人,但它们是对已经存在的查询的简单修改。您不必破解 trac 源代码,网络界面可让您编辑查询。
插件
如果您使用 eclipse,我推荐XML RPC 插件。它可以与Mylin紧密集成。(我认为即使没有插件,基本集成也可以工作),因此您的开发人员可以在 eclipse 中完成许多任务,而无需切换到 trac Web 界面。
(如果你使用 eclipse,但不知道 mylin,你应该看看它。你可以在没有任何配置的情况下测试它,因为它带有大多数 eclipse 发行版,并且可以在没有 trac 的情况下独立运行。)
至于其他插件,我们安装了 TocMacro、XmlRpcPlugin、WysiwygPlugin 和 TracRedirect。特别是,WYSIWYG 插件非常适合鼓励较少技术人员在 wiki 中维护他们自己的文档 - 您甚至可以在保留格式的同时从 MS Word 中进行 C&P,这很有帮助。
如果 Trac 的默认设置不能很好地代表您自己的工作流程,请查看 Trac 为您提供的自定义工单工作流程。这使我们能够将代码审查和集成测试步骤添加到工作流程中。
我建议让您的 Trac 服务器针对某些中央身份验证框架进行身份验证。我们运行一个带有身份验证凭据的 LDAP 树,它被我们所有的内部系统使用 - 包括 trac、svn、samba、openvpn 等。
@Dave Dunkin 是对的。将 Trac 用于您的内部使用,并使用Basecamp之类的系统为您的客户提供项目中正在发生的事情的高级概述。
如果是库存安装,则数据库只是一个 SQLite3,因此您可以轻松编写脚本来获取“安全”信息,例如票的数量,或者为什么不获取其中一个报告。这样,只要票名没问题,就可以自由讨论。修订版、里程碑、维基页面、标签(如果您使用该插件)也可用。
您可能可以撤销除ROADMAP_VIEW
匿名用户之外的所有权限,但这可能有点太高级了,不是吗?目前不支持个人票证或评论级别的访问控制 AFAIK。有关 trac 权限的详细信息,请参阅http://trac.edgewall.org/wiki/TracPermissions。
如评论之一所述,您不能基于用户限制票证或评论访问。寻找或创建外部报告系统是您最好的选择。
根据使用 Trac 的经验,有几件事:
创建自定义工作流程非常简单。GraphViz的使用 对交流状态和动作有很大帮助。如果您需要更复杂的状态交互,那么进一步扩展内置功能的工作流插件(如AdvancedTicketWorkflowPlugin)并不难。
对于自定义报告,您可以编写带有命名参数的 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.