管理议题

极狐GitLab 议题是在极狐GitLab 中就想法和计划工作进行协作的基本媒介。

创建议题

创建议题时,系统会提示您输入议题的字段。 如果您知道要分配给议题的值,则可以使用快捷操作输入它们。

您可以在 GitLab 中以多种方式创建问题:

从项目

先决条件:

  • 您必须至少拥有该项目的 Guest 角色。

要创建议题:

  1. 在顶部栏上,选择 主菜单 > 项目 并找到您的项目。
  2. 您可以:

    • 在左侧边栏上,选择 议题,然后在右上角选择 新建议题
    • 在顶部栏上,选择加号 (),然后在 此项目 下,选择 新建议题
  3. 完成填写字段
  4. 选择 创建议题

新创建的议题开放。

从群组

议题属于项目,但是当您在群组中时,您可以访问和创建属于群组中的项目的议题。

先决条件:

  • 您必须至少具有群组中项目的 Guest 角色。

要从群组创建问题:

  1. 在顶部栏上,选择 主菜单 > 群组 并找到您的群组。
  2. 在左侧边栏上,选择 议题
  3. 在右上角,选择 选择要创建议题的项目
  4. 选择您要为其创建议题的项目。该按钮现在反映了选定的项目。
  5. 选择 <project name> 中新建议题
  6. 完成填写字段
  7. 选择 创建议题

新创建的议题开放。

您最近选择的项目将成为您下次访问的默认项目。 如果您主要为同一项目创建议题,这可以为您节省大量时间。

从另一个议题或事件

新议题与原始议题相关联,引入于 14.3 版本。 关联到 复选框引入于 14.9 版本。

您可以从现有议题创建新议题,然后可以将这两个议题标记为相关。

先决条件:

  • 您必须至少具有群组中项目的 Guest 角色。

从另一个议题创建议题:

  1. 在现有议题中,选择垂直省略号 ()。
  2. 选择 新建关联议题
  3. 完成填写字段。 新问题表单有一个 关联到议题 #123 复选框,其中 123 是议题来源的 ID。如果您选中此复选框,则这两个议题将变为相关联
  4. 选择 创建议题

新创建的议题开放。

从议题看板

您可以从议题看板创建新议题。

先决条件:

  • 您必须至少具有项目的 Guest 角色。

要从项目议题看板创建议题:

  1. 在顶部栏上,选择 主菜单 > 项目 并找到您的项目。
  2. 选择 议题 > 看板
  3. 在版块列表的顶部,选择 新建议题 ()。
  4. 输入议题的标题。
  5. 选择 创建议题

要从群组议题看板创建议题:

  1. 在顶部栏上,选择 主菜单 > 群组 并找到您的群组。
  2. 选择 议题 > 看板
  3. 在版块列表的顶部,选择 新建议题 ()。
  4. 输入议题的标题。
  5. 项目 下,选择议题所属的群组中的项目。
  6. 选择 创建议题

议题已创建并显示在看板列表中,它共享列表的特性,因此,例如列表的范围限定为标记 Frontend,则新议题也具有此标记。

通过发送电子邮件

您可以在项目的 议题列表 页面上发送电子邮件以在项目中创建议题。

先决条件:

  • 您的实例必须配置接收电子邮件。
  • 议题列表中必须至少有一个议题。
  • 您必须至少拥有该项目的 Guest 角色。

要将议题通过电子邮件发送到项目:

  1. 在顶部栏上,选择 主菜单 > 项目 并找到您的项目。
  2. 选择 议题
  3. 在页面底部,选择 通过电子邮件向该项目发送新议题
  4. 要复制电子邮件地址,请选择 复制 ()。
  5. 从您的电子邮件客户端,向该地址发送一封电子邮件。主题用作新议题的标题,电子邮件正文成为描述。您可以使用 Markdown快速操作

成功后,创建了一个新议题,您的用户作为作者。 您可以将此地址保存为电子邮件客户端中的联系人以再次使用。

caution您看到的电子邮件地址是私人电子邮件地址,专为您生成。仅保存给自己,因为任何知道它的人都可以创建议题或合并请求。

要重新生成电子邮件地址:

  1. 在议题列表中,选择 通过电子邮件向该项目发送新议题
  2. 选择 重置此令牌

使用带有预填值的 URL

要直接链接到带有预填充字段的新议题页面,请在 URL 中使用查询字符串参数。您可以在外部 HTML 页面中嵌入 URL 以使用预填充的某些字段创建议题。

字段 URL 参数 备注
标题 issue[title] 必须是 URL 编码。
议题类型 issue[issue_type] incidentissue
描述模板 issuable_template 必须是 URL 编码。
描述 issue[description] 必须是 URL 编码。如果与 issuable_template默认议题模板结合使用,则 issue[description] 值附加到模板中。
私密 issue[confidential] 如果为 true,则议题被标记为机密。
关联到 add_related_issue 议题的数字 ID。如果存在,议题表单显示 关联到… 复选框 ,可以选择性地将新议题链接到指定的现有议题。

调整这些示例以形成带有预填充字段的新议题 URL。 在项目中创建议题:

  • 带有预填充的标题和描述:

    https://gitlab.com/gitlab-org/gitlab/-/issues/new?issue[title]=Whoa%2C%20we%27re%20half-way%20there&issue[description]=Whoa%2C%20livin%27%20in%20a%20URL
    
  • 使用预填充的标题和描述模板:

    https://gitlab.com/gitlab-org/gitlab/-/issues/new?issue[title]=Validate%20new%20concept&issuable_template=Feature%20Proposal%20-%20basic
    
  • 带有预填充的标题、描述并标记为机密:

    https://gitlab.com/gitlab-org/gitlab/-/issues/new?issue[title]=Validate%20new%20concept&issue[description]=Research%20idea&issue[confidential]=true
    

使用服务台

要提供电子邮件支持,请为您的项目启用服务台

现在,当您的客户发送新电子邮件时,可以在适当的项目中创建新议题并从那里跟进。

新建议题表单中的字段

创建新议题时,您可以填写以下字段:

编辑议题

重新排序列表项功能引入于 15.0 版本。

您可以编辑议题的标题和描述。

先决条件:

  • 您必须至少具有该项目的报告者角色,作为议题的作者,或被分配给议题。

要编辑问题:

  1. 在标题右侧,选择 编辑标题和描述 ()。
  2. 编辑可用字段。
  3. 选择 保存修改

重新排序议题描述中的列表项

引入于 15.0 版本。

当您查看描述中包含列表的议题时,您还可以对列表项重新排序。

先决条件:

  • 您必须至少具有项目的报告者角色,或是议题的作者,或被指派到议题。
  • 议题的描述必须具有有序、无序任务列表。

要重新排序列表项,在查看问题时:

  1. 将鼠标悬停在列表项行上,使拖动图标 () 可见。
  2. 单击并按住拖动图标。
  3. 将该行拖到列表中的新位置。
  4. 释放拖动图标。

批量编辑项目中的议题

当您在一个项目中时,您可以一次编辑多个议题。

先决条件:

  • 您必须至少具有该项目的报告者角色。

同时编辑多个议题:

  1. 在顶部栏上,选择 主菜单 > 项目 并找到您的项目。
  2. 在左侧边栏上,选择 议题
  3. 选择 编辑议题。屏幕右侧会出现一个侧边栏。
  4. 选中您要编辑的每个议题旁边的复选框。
  5. 从侧边栏中,编辑可用字段。
  6. 选择 全部更新

在项目中批量编辑议题时,您可以编辑以下属性:

批量编辑群组中的议题

当您在一个群组中时,您可以跨多个项目编辑多个议题。

先决条件:

  • 您必须至少具有该项目的报告者角色。

同时编辑多个议题:

  1. 在顶部栏上,选择 主菜单 > 群组 并找到您的群组。
  2. 在左侧边栏上,选择 议题
  3. 选择 编辑议题。屏幕右侧会出现一个侧边栏。
  4. 选中您要编辑的每个议题旁边的复选框。
  5. 从侧边栏中,编辑可用字段。
  6. 选择 全部更新

在群组中批量编辑议题时,您可以编辑以下属性:

移动议题

当您移动议题时,它会关闭并复制到目标项目。 原始议题没有被删除。系统注释被添加到两个议题中,显示它来源和qu’xiang。

将议题移至具有不同访问规则的项目时要小心。在移动议题之前,请确保它不包含敏感数据。

先决条件:

  • 您必须至少具有该项目的报告者角色。

移动问题:

  1. 转到议题。
  2. 在右侧边栏上,选择 移动议题
  3. 搜索将议题移至的项目。
  4. 选择 移动

批量移动议题

您可以将所有未解决的议题从一个项目移动到另一个项目。

先决条件:

  • 您必须至少具有该项目的报告者角色。
  1. 可选(但推荐),在控制台中尝试任何更改之前创建备份。
  2. 打开 Rails 控制台。
  3. 运行以下脚本。确保将 projectadmin_usertarget_project 更改为您的值。

    project = Project.find_by_full_path('full path of the project where issues are moved from')
    issues = project.issues
    admin_user = User.find_by_username('username of admin user') # make sure user has permissions to move the issues
    target_project = Project.find_by_full_path('full path of target project where issues moved to')
    
    issues.each do |issue|
       if issue.state != "closed" && issue.moved_to.nil?
          Issues::MoveService.new(project: project, current_user: admin_user).execute(issue, target_project)
       else
          puts "issue with id: #{issue.id} and title: #{issue.title} was not moved"
       end
    end; nil
    
  4. 要退出 Rails 控制台,请输入 quit

关闭议题

当您决定某个议题已解决或不再需要时,您可以关闭它。 该议题已标记为已关闭但未删除。

先决条件:

  • 您必须至少具有该项目的报告者角色。

要关闭议题,您可以执行以下操作:

  • 在议题的顶部,选择 关闭议题
  • 议题看板中,将议题卡从其列表拖到 已关闭 列表中。

重新打开关闭的议题

先决条件:

  • 您必须至少具有该项目的报告者角色。

要重新打开已关闭的议题,请在议题顶部选择 重启议题。 重新打开的问题与任何其他未解决的问题没有不同。

自动关闭议题

您可以通过在提交消息或 MR 描述中使用某些词来自动关闭议题。

如果提交消息或合并请求描述包含与定义的 pattern 匹配的文本,则在以下任一情况下,匹配文本中引用的所有议题都将关闭:

  • 提交被推送到项目的默认分支
  • 提交或合并请求,合并到默认分支中。

例如,如果您在合并请求描述中包含 Closes #4, #6, Related to #5

  • 合并 MR 时会自动关闭议题 #4#6
  • 议题 #5 被标记为相关议题,但它不会自动关闭。

或者,当您从议题创建合并请求时,它会继承议题的里程碑和标签。

出于性能原因,从现有仓库第一次推送时禁用自动关闭议题。

默认关闭 pattern

要自动关闭议题,请使用以下关键字,后跟议题引用。

可用关键字:

  • Close, Closes, Closed, Closing, close, closes, closed, closing
  • Fix, Fixes, Fixed, Fixing, fix, fixes, fixed, fixing
  • Resolve, Resolves, Resolved, Resolving, resolve, resolves, resolved, resolving
  • Implement, Implements, Implemented, Implementing, implement, implements, implemented, implementing

可用的议题引用格式:

  • 本地议题 (#123).
  • 跨项目议题 (group/project#123).
  • 议题的完整 URL (https://gitlab.example.com/group/project/issues/123).

示例:

Awesome commit message

Fix #20, Fixes #21 and Closes group/otherproject#22.
This commit is also related to #17 and fixes #18, #19
and https://gitlab.example.com/group/otherproject/issues/23.

上一个提交消息关闭了此提交推送到的项目中的#18#19#20#21,以及 group/otherproject 中的 #22#23#17 没有关闭,因为它与 pattern 不匹配。

您可以在多行提交消息或单行中使用关闭模式,使用 git commit -m 从命令行完成。

默认议题结束 pattern 正则表达式:

\b((?:[Cc]los(?:e[sd]?|ing)|\b[Ff]ix(?:e[sd]|ing)?|\b[Rr]esolv(?:e[sd]?|ing)|\b[Ii]mplement(?:s|ed|ing)?)(:?) +(?:(?:issues? +)?%{issue_ref}(?:(?: *,? +and +| *,? *)?)|([A-Z][A-Z0-9_]+-\d+))+)

禁用自动关闭议题

您可以在项目设置中按项目禁用自动议题关闭功能。

先决条件:

  • 您必须至少具有该项目的维护者角色。

要禁用自动关闭议题:

  1. 在顶部栏上,选择 主菜单 > 项目 并找到您的项目。
  2. 在左侧边栏上,选择 设置 > 仓库
  3. 展开 默认分支
  4. 选择 在默认分支上自动关闭引用的议题
  5. 选择 保存修改

引用的议题仍会显示,但不会自动关闭。

更改此设置仅适用于新的合并请求或提交。已经关闭的议题保持原样。 禁用自动关闭议题仅适用于禁用了该设置的项目中的议题,在这个项目中,合并请求和提交仍然可以关闭另一个项目的议题。

更改议题类型

先决条件:

  • 您必须是议题作者或至少具有项目的报告者角色。

要更改议题类型:

  1. 在标题右侧,选择 编辑标题和描述 ()。
  2. 编辑议题并从 议题类型 下拉列表中选择一个议题类型:

    • Issue
    • Incident
  3. 选择 保存修改.

删除议题

从垂直省略号菜单中删除议题引入于 14.6 版本

先决条件:

  • 您必须具有项目的所有者角色。

要删除议题:

  1. 在一个议题中,选择垂直省略号 ()。
  2. 选择 删除议题

或者:

  1. 在一个议题中,选择 编辑标题和描述 ()。
  2. 选择 删除议题

将议题提升为史诗

您可以将议题提升到直接父组中的史诗

将议题提升为史诗:

  1. 在一个议题中,选择垂直省略号 ()。
  2. 选择 提升为史诗

或者,您可以使用 /promote 快速操作

向迭代添加议题

将议题添加到迭代

  1. 转到议题。
  2. 在右侧边栏的 迭代 部分,选择 编辑
  3. 从下拉列表中,选择要与此议题关联的迭代。
  4. 选择下拉列表之外的任何区域。

或者,您可以使用 /iteration 快速操作

查看指派给您的所有议题

要查看指派给您的所有议题:

  1. 在顶部栏上,将光标放在 搜索 框中。
  2. 从下拉列表中,选择 指派给我的议题

或者:

  • 要使用键盘快捷键,请按 Shift + i
  • 在顶部栏的右上角,选择 议题

过滤议题列表

  • 按迭代过滤功能引入于 13.6 版本。
  • 按迭代过滤功能从旗舰版移动到专业版于 13.9 版本。
  • 按类型过滤功能引入于 13.10 版本,功能标志为 vue_issues_list。默认禁用。
  • 按类型过滤功能在私有化部署版上启用于 14.10 版本。
  • 按类型过滤功能一般可用于 15.1 版本。功能标志 vue_issues_list 删除。
  • 按健康状态过滤功能引入于 15.5 版本。

要过滤议题列表:

  1. 在议题列表上方,选择 搜索或过滤结果…
  2. 在出现的下拉列表中,选择您要过滤的属性。
  3. 选择或键入用于过滤属性的运算符。可以使用以下运算符:
    • =:是
    • !=:不是
  4. 输入文本,过滤属性。您可以使用 NoneAny 过滤某些属性。
  5. 重复此过程,按多个属性进行过滤。多个属性由逻辑 AND 连接。

按 ID 过滤议题

  1. 在顶部栏上,选择 主菜单 > 项目 并找到您的项目。
  2. 在左侧边栏中,选择 议题 > 列表
  3. 搜索 框中,输入议题 ID。例如,输入过滤器 #10,仅返回议题 10。

filter issues by specific ID

复制议题引用

要引用实例中其他地方的议题,您可以使用其完整 URL 或简短引用,类似于 namespace/project-name#123,其中 namespace 是群组或用户名。

要将议题引用复制到剪贴板:

  1. 转到议题。
  2. 在右侧边栏的 引用 旁边,选择 复制引用 ()。

您现在可以将引用粘贴到另一个描述或评论中。

复制议题电子邮件地址

您可以通过发送电子邮件在议题中创建评论。 向此地址发送电子邮件会创建包含电子邮件正文的评论。

要复制议题的电子邮件地址:

  1. 转到议题。
  2. 在右侧边栏 发邮件 旁边,选择 复制引用 ()。

实时侧边栏

  • 引入于 13.3 版本。默认禁用。
  • 启用于自助管理版于 14.5 版本。
  • 普遍可用于 14.9 版本。功能 real_time_issue_sidebarbroadcast_issue_updates 已移除。

右侧边栏的某些部分实时更新。 当您查看议题并且有人更改了其中一个值时,您无需刷新页面即可看到更改。

以下部分实时更新:

  • 指派人
  • 标记(如果启用)

指派人

一个问题可以分配给一个或多个用户

指派人可以根据需要随时更改,指派人是对议题负责的人。 当一个议题被分配给某人时,它会出现在他们分配的议题列表中。

如果用户不是项目的成员,则只能将议题分配给他们,前提是他们自己创建议题或其他项目成员将议题分配给他们。

要更改议题的指派人:

  1. 转到您的议题。
  2. 在右侧边栏的 指派人 部分中,选择 编辑
  3. 从下拉列表中选择要添加为指派人的用户。
  4. 选择下拉列表之外的任何区域。

类似议题

为防止同一主题出现重复议题,系统在您创建新议题时会搜索类似议题。

先决条件:

  • GraphQL 必须启用。

当您在 新建议题 页面的标题文本框中键入时,系统会在当前项目中的所有议题中搜索标题和描述。仅返回您有权访问的议题。 标题文本框下方最多显示五个类似议题,按最近更新排序。

健康状态

为了帮助您跟踪议题状态,您可以为每个议题分配一个状态。 此状态将议题标记为按计划进行,或需要注意以按计划进行。

先决条件:

  • 您必须至少具有该项目的报告者角色。

要编辑议题的运行状况:

  1. 转到议题。
  2. 在右侧边栏的 健康状态 部分,选择 编辑
  3. 从下拉列表中,选择要添加到此问题的状态:

    • On track (green)
    • Needs attention (amber)
    • At risk (red)

您可以在以下位置查看议题的运行状况:

  • 议题列表
  • 史诗树
  • 议题看板上的议题卡片

议题关闭后,无法编辑其运行状况,并且在重新打开议题之前 编辑 按钮将变为禁用状态。

发布议题

如果状态页面应用程序与项目相关联,您可以使用 /publish 快速操作 发布议题。

与议题相关的快速操作

您还可以使用快速操作来管理议题。

某些操作还没有相应的 UI 按钮。 您可以仅通过使用快速操作来执行以下操作:

  • 添加或删除 Zoom 会议/zoom/remove_zoom)。
  • 发布议题 (/publish)。
  • 将议题克隆到同一个或另一个项目 (/clone)。
  • 关闭一个议题并将其标记为另一个议题的副本(/duplicate)。
  • 从项目中的另一个合并请求或议题中复制标记和里程碑 (/copy_metadata)。