将提交链接到问题 - 最佳实践

时间:2012-08-17 09:03:04

标签: version-control mercurial project-management dvcs redmine

我们正在尝试介绍我们希望的良好开发实践:每个提交都必须与问题跟踪系统中的问题相关联。 (为了满足这一要求,创建一个新问题是完全可以接受的。)

我们的问题跟踪器(Redmine)和DVCS(Mercurial)集成良好,但我们遇到一个问题:如果开发人员需要在离线时提交某些内容会发生什么?目前,Redmine是在线访问的,Mercurial是通过TortoiseHG(Windows)或shell(Linux)访问的。

我不知道任何允许脱机使用Redmine的工具(例如,Windows桌面客户端,商业版或免费版)(创建问题,而不仅仅是查看它们)。我们甚至不介意将Redmine数据库复制到每个开发人员的机器上,但是然后同步数据库并不容易。

我们该怎么办?我可以看到以下选项:

  1. 从Redmine切换到具有离线支持的问题跟踪器。 [我不认为Trac会好得多]

  2. 将Redmine脱机创建问题解决一些问题。 [不确定如何,不引起而不是解决问题]

  3. 放弃提交必须始终引用现有问题的想法。 [但这似乎是个好主意]

  4. 将提交与问题联系起来。 [这要求开发人员在临时位置编写每个问题的描述,稍后将其复制到Redmine,然后手动将新问题与提交链接; <低效且容易出错]

  5. 禁止离线提交(因此禁止脱机工作)。 [考虑到如何选择DVCS主要是为了允许离线工作] [似乎很愚蠢]

  6. 你的建议是什么?

3 个答案:

答案 0 :(得分:1)

处理离线问题并在本地提交以及将其推送到上游(比如指定服务器)是一回事。

前者可以在不使用redmine的情况下完成。可能存在现有的redmine问题,或者需要创建一个新问题并与提交相关联。

在推送上游更改之前,可以editing the last commitcollapsing multiple commits to one更新问题ID。后者可能是一个更好的选择,因为每个问题上游都会有一次提交 - 如果需要,可以轻松回滚。

答案 1 :(得分:0)

在我的地方,我们提交了与特定问题相关的提交(在错误修正提交的情况下)。系统很简单:

  1. 在提交消息中,在方括号内键入错误号。
  2. 当我们发布版本时,我们会收集自上次发布以来所做的所有提交。
  3. 通过正则表达式,我们提取修复了错误的id。
  4. 我们使用此列表更新错误数据库并创建更改日志。
  5. 我认为这里的重要教训是bug数据库和版本控制系统不必是明确链接的。通过语法约定,它易于聚合并获得概述,这使得手动更新bug数据库变得容易(足够)。

    修改:关于“脱机工作”部分。 Mercurial是一个DVCS,并不意味着经常连接。拥抱它,允许本地提交并在您重新联机和/或推送时处理错误数据库。

答案 2 :(得分:0)

Redmine有效地具有创建问题的脱机功能:可以将其配置为接受新问题并通过电子邮件发布更新。并且大多数电子邮件客户端脱机工作(将邮件临时存储在发件箱中,直到用户上线)。

电子邮件还可以提供(非常有限的)离线查看模式。如果我通过电子邮件通知每个新问题和更新,并自动将这些电子邮件移动到单独的文件夹中,我可以找到相应的问题编号。

这不是理想的,但在redmine添加离线模式之前,它可以作为临时解决方案使用。当然,如果由太多人完成,则存在冲突的风险,而redmine无法很好地解决(例如,两个人试图改变问题状态)。

DVCS与(集中式)问题跟踪器的集成还存在一个普遍且不可避免的问题。假设两个开发人员解决某个问题,并将其提交链接到它。当他们将提交推送到与redmine绑定的存储库时,在冲突解决过程中只会保留其中一个解决方案。该问题仍将与单个提交相关联,但没有明确指出其中一个提交基本上被另一个提交弃用。