现已发布!阅读 10 月份的新功能和修复。

介绍 GitHub Issues 集成

2020 年 5 月 6 日,作者:Alex Ross,@alexr00

在 Visual Studio Code 团队中,我们使用 GitHub Issues 来跟踪我们所有的工作。从详细的 迭代计划 到单个 Bug,我们都将其跟踪为 GitHub Issues。鉴于 Issues 对我们团队和其他 GitHub 项目的重要性,我们希望将 GitHub Issues 集成到 VS Code 中。此添加是对我们 宣布 的 GitHub Pull Request 工作的补充,该工作已在一年多前发布。从 VS Code 版本 1.45 开始,这种新的支持将 Issues 和源代码更紧密地结合在一起,将在 GitHub Pull Requests 和 Issues 扩展(以前称为 GitHub Pull Requests)中提供。

我们的集成方法

Issues 和 Pull Request 通常是密不可分的,因此将它们包含在同一个 GitHub Pull Requests 和 Issues 扩展中是一个合乎逻辑的步骤,因为 Issues 和 Pull Request 都需要使用相同的 GitHub API。我们不想直接将 GitHub 功能添加到 VS Code 核心编辑器中,因为有很多源代码控制选项。相反,当我们检测到用户打开的存储库使用 GitHub 时,我们将推荐该扩展。通过使用我们自己的 扩展 API,我们确保 API 具有扩展作者所需的特性,并且其他存储库提供商可以实现类似的集成。

重要的是,我们不要规定过于具体的流程。相反,我们的目标是以灵活的方式将 Issues 融入到内部开发循环中。例如,在代码注释中提供 Issues 的更多上下文是该目标的一部分,但在 VS Code 中添加完整的 Issue 管理则不太合适。我们不想重新发明 GitHub 已经做得很好的 UI。我们**确实**想要建立尚不存在的联系。

代码上下文中的 Issues

在源代码中链接到 Issues 是我们流程中正常的一部分,尤其是在一些难以理解的逻辑或需要采取行动的 //TODO 注释时。如果您在 VS Code 存储库中进行 搜索 Issue 引用,您将看到许多提到的 Issues。虽然链接提供了指向更多信息的指针,但要真正了解更多信息,您需要离开编辑器。现在,通过悬停获得 Issues 上下文,您无需打断工作流程即可了解更多信息。

Issue Hover

Issue 悬停适用于完整的 Issue URL、Issue 评论 URL、按编号引用的 Issues(#1234)以及按 owner/repository#1234(例如 Microsoft/vscode#1234)引用的 Issues。我们还在代码库中经常引用用户。VS Code 建议 API 拥有许多开发人员引用,以便清楚地表明谁负责这些建议。

User Hover

Issue 上下文通常在提交消息中需要,用于引用提交解决的 Issue,在源代码文件中,以及在 Markdown(如变更日志)中。为了轻松添加此上下文,我们添加了 Issues 和用户的完成建议。在 Git 提交文本框中,可以使用 githubIssues.issueCompletionFormatScm 设置格式化 Issue 完成。在 Markdown 文件中,Issues 将完成为 Markdown 链接,而在其他文件中,Issues 将完成为简单的 Issue 编号(#1234)。

Completion Suggestions

可能的 Issues 列表是可配置的,可以使用 githubIssues.queries 设置,因此,如果您跨多个存储库工作,则可以包含这些 Issues 的查询。这些查询使用 GitHub 搜索语法。用户列表包括当前打开的存储库中的协作者。

Issue Queries

从任何地方创建 Issue

当我们在 VS Code 中找到一个 Bug,而我们正在处理一些源代码时,我们会创建一个 Issue 并将其分配给该区域的所有者。或者,如果 Bug 查找者也是所有者,我们通常会在 //TODO 注释中留下一个提醒,以便稍后返回。当你有许多贡献者时,在代码库中到处散布 //TODO 很难跟踪(虽然可以说我们都做过),但创建 Issue 并将其在 //TODO 中引用是可以跟踪的。为了减少创建 Issue 的障碍和在源代码中深入时丢失上下文,这里有几种新的创建 Issue 的方法。

从 //TODO 注释(使用 githubIssues.createIssueTriggers 可配置)中,您可以创建并分配 Issue,而无需离开 VS Code。

Create Issue from TODO

并且从选择中,您可以使用 **GitHub Issues:从选择创建 Issue** 命令快速创建 Issue,其中包含指向其来源的源代码的永久链接。如果您只需要指向一些代码的指针,还可以使用 **GitHub Issues:复制 GitHub 永久链接** 命令。最后,如果终端中存在故障信息,您可以将输出复制到剪贴板并使用 **GitHub Issues:从剪贴板创建 Issue** 创建 Issue。

处理 Issues

一个常见的流程是查看您的 Issues,选择一个要处理的 Issue,创建一个分支来处理,进行一些提交,然后将更改合并回主分支,并使用 Pull Request。从新的 **Issues** 视图中,您可以完成这些操作。

Work on an Issue

为了适应更多流程,您可以配置多个选项。如果您的流程不涉及创建主题分支,您可以使用 githubIssues.useBranchForIssues 禁用分支创建。如果您对分支使用不同的命名方案,可以使用 githubIssues.issueBranchTitle 设置。**Issues** 视图中列出的 Issues 可以配置为使用自定义查询,可以使用 githubIssues.queries 设置。

想要了解更多?

您可以观看 Sana Ajani,@sana_ajani,以及 Burke Holland,@burkehollandGitHub Satellite 上发表的 **每个 GitHub 用户都应该了解 VS Code** 演讲。


您也可以阅读 使用 GitHub 主题,该主题更详细地描述了 VS Code 的 GitHub 集成。

展望未来

目前,大多数这些功能仅在存储库克隆(不是派生)中受支持,因此需要做更多工作来支持这种情况和其他用例。我们非常乐意收到您对该扩展的反馈,因此请随时在扩展 存储库 的 Issues 中留下建议!

编码愉快!

Alex Ross,VS Code 开发人员,@alexr00