🚀 在 VS Code 中

介绍 GitHub Issues 集成

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

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

我们的集成方法

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

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

代码上下文中的 Issues

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

Issue Hover

Issue 悬停适用于完整的 issue URL、issue 评论 URL、按编号引用的 issues (#1234) 以及按 owner/repository#1234 引用的 issues(例如 Microsoft/vscode#1234)。我们还经常在我们的代码库中引用用户。VS Code proposed API 有许多开发者引用,以明确谁负责这些提案。

User Hover

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

Completion Suggestions

可用 issue 列表可通过 githubIssues.queries 设置进行配置,因此如果您跨多个仓库工作,您可以包含针对这些 issues 的查询。查询使用 GitHub 搜索语法。用户列表包括当前打开仓库中的协作者。

Issue Queries

从任何地方创建 issue

当我们在处理某些源代码时在 VS Code 中发现错误时,我们会创建一个 issue 并将其分配给该区域的负责人。或者,如果错误的发现者也是负责人,我们通常会留下 //TODO 注释,以提醒稍后处理。当您有很多贡献者时,在整个代码库中散布 //TODO 很难跟踪(尽管可以肯定地说我们都这样做过),但是创建 issue 并在 //TODO 中引用它才是可跟踪的。为了减少在深入源代码时创建 issue 的障碍和上下文丢失,我们提供了一些创建 issue 的新方法

从 //TODO 注释(可通过 githubIssues.createIssueTriggers 配置),您可以创建和分配 issue,而无需离开 VS Code。

Create Issue from TODO

并且从选区,您可以使用 GitHub Issues: Create Issue from Selection 命令快速创建一个 issue,其中包含指向其来源源代码的永久链接。如果您只需要指向某些代码的指针,您也可以使用 GitHub Issues: Copy GitHub Permalink 命令。最后,如果终端中有故障信息,您只需将输出复制到剪贴板,然后使用 GitHub Issues: Create Issue from Clipboard 创建 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 集成。

未来展望

目前,这些功能中的大多数仅在仓库克隆(而非 fork)中受支持,因此还需要做更多工作来支持这种情况和其他用例。我们很乐意看到您对此扩展的反馈,所以请随时在扩展 repo 的 issues 中给我们留下建议!

编码愉快!

Alex Ross,VS Code 开发者 @alexr00