Bugzilla的“请求系统”:其他问题跟踪工具有吗?

时间:2015-02-05 21:32:48

标签: bugzilla issue-tracking youtrack

我已经使用了Bugzilla多年,我最喜欢的功能之一是“请求系统”(http://www.bugzilla.org/features/#rs),也称为“标志”。该问题可以标记(?)给用户;然后,用户可以接受请求(+)或拒绝它( - )。

我正在重新评估我们的问题跟踪工具,除了Bugzilla之外我似乎找不到任何具有此功能的内容。

所以我想知道:

  • 其他任何产品都提供类似的功能吗?
  • 如果没有,那么有没有办法模仿它(使用标签或自定义字段或其他东西)?

您的建议表示赞赏(仅供参考:我目前倾向于YouTrack)。


Alex V.询问有关Bugzilla请求系统功能的更多详细信息。这是一个例子:

可以在管理界面中创建任意标志列表。在编辑问题时,它们会列在一行中,这是一个示例:

A sample list of unset flags

接下来,有人可以设置标志并要求跟进。屏幕截图显示我(dcherk)为john@doe.com设置DJiNNInput标志:

A sample flag requested

请注意,可以多次请求相同的标志(未显示)。

稍后,john @ doe.com可能会以某种方式对该标志采取行动,并将该请求标记为已接受:

A sample flag, accepted

或者,john @ doe.com可能无法接受该请求。在那种情况下,他会否认:

A sample flag, denied

毋庸置疑,所有这些更改都会在问题历史记录中进行跟踪,并且可以进行搜索和报告。

2 个答案:

答案 0 :(得分:0)

在YouTrack中没有这样的功能。但是,您可以做的是,您可以为用户设置问题,就像用户是否自行完成一样。然后,他们会收到有关该通知的通知,并可以将问题留在明星上,或将其删除。 不确切知道这些标志在Bugzilla中是如何工作的,所以它可能不是该功能的完全替代品。如果你详细说明了所需的行为,我会告诉你如何(如果可能的话)完全模仿它。

答案 1 :(得分:0)

供参考:

这就是我们最终在YouTrack中所做的事情:

创建了两个user[*]字段:

  • 输入请求(即请求输入的人)
  • 请求输入(即需要输入的用户)

用户始终可以手动设置这些字段,但我们还添加了以下工作流程规则以加快速度:

规则1,将更改与两个字段相关联:

rule Input Requested 

when Input Requested.changed { 
  if (Input Requested.isEmpty) { 
    Input Requesting.clear; 
  } else { 
    Input Requesting.add(loggedInUser); 
  } 
}

规则2,已关闭的问题不再需要输入:

rule Clear Input Requests When Issue Becomes Closed 

when State.becomes({Closed}) { 
  Input Requested.clear; 
  Input Requesting.clear; 
}

规则3,@ mentioning设置字段;回复清除字段:

rule Input Requested via @mention 

when comments.added.isNotEmpty { 
  var separators = " `!#%^&*()=[]{}:;'\"\\|,<>/?\n\r\t"; 
  var mentionedUsers = ""; 

  var myComment = comments.added.first; 
  var originalText = myComment.text; 
  var text = " " + originalText.lowerCase + " "; 

  var username = ""; 
  var user = loggedInUser; 
  var index = -1; 

  index = text.indexOf("@", opts); 

  while (index != -1) { 
    index = index + 1; 
    username = ""; 

    var nextSymbol = text.substring(index, index + 1); 
    while (!separators.contains(nextSymbol, opts)) { 
      username = username + nextSymbol; 
      index = index + 1; 
      nextSymbol = text.substring(index, index + 1); 
    } 

    if (username.endsWith(".", opts)) { 
      username = username.substringOfLength(username.length - 1, opts); 
    } 

    debug("Extracted @username: |" + username + "|"); 
    if (username.isNotEmpty) { 
      user = project.getUser(username); 

      if (user != null && !mentionedUsers.contains("@" + user.login + ",", ignoreCase) && (user.isInGroup(permittedGroup.name) || permittedGroup == null || user == reporter) && (myComment.permittedGroup == null || user.isInGroup(myComment.permittedGroup.name))) { 

        if (Input Requesting.contains(user)) { 
          Input Requested.remove(loggedInUser); 
          if (Input Requested.isEmpty) { 
            Input Requesting.clear; 
          } 
        } else { 
          Input Requested.add(user); 
          Input Requesting.add(loggedInUser); 
        } 

        mentionedUsers = mentionedUsers + "@" + user.login + ","; 
      } 
    } 

    text = text.substringRelative("@" + username, pos: after); 
    index = text.indexOf("@", opts); 
  } 
}

希望在此过程中帮助任何人。