Bugzilla 的 "Request System":其他问题跟踪工具有吗?
Bugzilla's "Request System": do other issue tracking tools have it?
我使用 Bugzilla 多年,我最喜欢的功能之一是 "request system" (http://www.bugzilla.org/features/#rs),也称为 "flags"。该问题可以标记(?)给用户;然后用户可以接受请求 (+) 或拒绝请求 (-)。
我正在重新评估我们的问题跟踪工具,除了 Bugzilla,我似乎找不到任何具有此功能的工具。
所以我想知道:
- 是否有任何其他产品提供类似的功能?
- 如果没有,那么有没有办法模仿它(使用标签或自定义字段或其他东西)?
感谢您的建议(仅供参考:我目前倾向于 YouTrack)。
Alex V. 询问了有关 Bugzilla 请求系统功能的更多详细信息。这是一个例子:
可以在管理界面中创建任意的标志列表。编辑问题时,它们排成一行,示例如下:
接下来有人可以立flag求后续了。屏幕截图显示我 (dcherk) 为 john@doe.com:
设置 DJiNNInput 标志
请注意,可以多次请求同一标志(未显示)。
稍后,john@doe.com 可能会以某种方式对标志进行操作并将请求标记为已接受:
或者,john@doe.com 可能无法接受请求。那样的话,他就否认了:
不用说,所有这些更改都在问题历史记录中进行了跟踪,并且可以进行搜索和报告。
YouTrack 中没有此类功能。但是,您可以为用户加注星标,就好像用户自己做的一样。然后他们将收到有关它的通知,并且可以在该问题上留下星标,或将其删除。
不知道这些标志在 Bugzilla 中是如何工作的,所以它可能不是该功能的完全替代品。如果您详细说明所需的行为,我会让您知道如何(如果可能)完全模仿它。
仅供参考:
这就是我们最终在 YouTrack 中所做的事情:
创建了两个 user[*]
字段:
- 输入请求(即请求输入的人)
- 请求输入(即需要输入的用户)
用户始终可以手动设置这些字段,但我们还添加了以下工作流程规则来加快速度:
规则 1,涉及两个字段的更改:
rule Input Requested
when Input Requested.changed {
if (Input Requested.isEmpty) {
Input Requesting.clear;
} else {
Input Requesting.add(loggedInUser);
}
}
规则二,已关闭的问题不需要再输入:
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);
}
}
希望对一路上的任何人有所帮助。
我使用 Bugzilla 多年,我最喜欢的功能之一是 "request system" (http://www.bugzilla.org/features/#rs),也称为 "flags"。该问题可以标记(?)给用户;然后用户可以接受请求 (+) 或拒绝请求 (-)。
我正在重新评估我们的问题跟踪工具,除了 Bugzilla,我似乎找不到任何具有此功能的工具。
所以我想知道:
- 是否有任何其他产品提供类似的功能?
- 如果没有,那么有没有办法模仿它(使用标签或自定义字段或其他东西)?
感谢您的建议(仅供参考:我目前倾向于 YouTrack)。
Alex V. 询问了有关 Bugzilla 请求系统功能的更多详细信息。这是一个例子:
可以在管理界面中创建任意的标志列表。编辑问题时,它们排成一行,示例如下:
接下来有人可以立flag求后续了。屏幕截图显示我 (dcherk) 为 john@doe.com:
设置 DJiNNInput 标志请注意,可以多次请求同一标志(未显示)。
稍后,john@doe.com 可能会以某种方式对标志进行操作并将请求标记为已接受:
或者,john@doe.com 可能无法接受请求。那样的话,他就否认了:
不用说,所有这些更改都在问题历史记录中进行了跟踪,并且可以进行搜索和报告。
YouTrack 中没有此类功能。但是,您可以为用户加注星标,就好像用户自己做的一样。然后他们将收到有关它的通知,并且可以在该问题上留下星标,或将其删除。 不知道这些标志在 Bugzilla 中是如何工作的,所以它可能不是该功能的完全替代品。如果您详细说明所需的行为,我会让您知道如何(如果可能)完全模仿它。
仅供参考:
这就是我们最终在 YouTrack 中所做的事情:
创建了两个 user[*]
字段:
- 输入请求(即请求输入的人)
- 请求输入(即需要输入的用户)
用户始终可以手动设置这些字段,但我们还添加了以下工作流程规则来加快速度:
规则 1,涉及两个字段的更改:
rule Input Requested
when Input Requested.changed {
if (Input Requested.isEmpty) {
Input Requesting.clear;
} else {
Input Requesting.add(loggedInUser);
}
}
规则二,已关闭的问题不需要再输入:
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);
}
}
希望对一路上的任何人有所帮助。