引入 GitHub 问题集成
2020 年 5 月 6 日,作者 Alex Ross,@alexr00
在 Visual Studio Code 团队,我们使用 GitHub 问题来跟踪我们所有的工作。从我们详细的迭代计划到单个 bug,我们都将它们作为 GitHub 问题进行跟踪。鉴于问题对我们团队和其他 GitHub 项目的重要性,我们希望将 GitHub 问题集成添加到 VS Code 中。这项新增功能补充了我们一年多前宣布的 GitHub Pull Request 工作。从 VS Code 1.45 版本开始,这项使问题和源代码更紧密结合的新支持将在 GitHub Pull Requests and Issues 扩展(以前名为 GitHub Pull Requests)中提供。
我们的集成方法
问题和拉取请求通常是相辅相成的,因此将它们包含在同一个 GitHub Pull Requests and Issues 扩展中是合乎逻辑的一步,因为问题和拉取请求都需要许多相同的 GitHub API。我们不想直接将 GitHub 功能添加到核心 VS Code 编辑器中,因为存在许多源代码控制选项。相反,当我们检测到用户的开放仓库使用 GitHub 时,我们将推荐此扩展。通过使用我们自己的 扩展 API,我们确保该 API 具有扩展作者所需的功能,并且其他仓库提供商可以实现类似的集成。
我们不希望规定过于具体的工作流程,这一点很重要。相反,我们的目标是以灵活的方式将问题引入内部开发循环。例如,在代码注释中为问题提供更多上下文是该目标的一部分,但将完整的问题管理添加到 VS Code 中则不太合适。我们不想重新发明 GitHub 已经做得很好的 UI。我们**确实**希望建立尚未存在的连接。
代码上下文中的问题
在源代码中链接问题是我们工作流程的正常组成部分,特别是在存在一些难以理解的逻辑或需要采取行动的 //TODO 注释时。如果您在 VS Code 仓库中搜索问题引用,您会看到大量提及的问题。虽然链接提供了更多信息的指针,但要真正了解更多信息,您需要离开编辑器。现在,通过悬停获取此问题上下文,您无需中断工作流程即可了解更多信息。
问题悬停适用于完整的问题 URL、问题评论 URL、通过编号引用(如 #1234
)的问题,以及通过 owner/repository#1234
引用(例如 Microsoft/vscode#1234
)的问题。我们还经常在代码库中引用用户。VS Code 的提议 API 包含许多开发者引用,以便明确提案的负责人。
问题上下文通常在提交消息中需要,用于引用提交解决的问题,在源代码文件中,以及在 Markdown 中(例如变更日志)。为了方便添加此上下文,我们添加了问题和用户的完成建议。在 Git 提交文本框中,您可以使用 githubIssues.issueCompletionFormatScm
设置格式化您的问题完成。在 Markdown 文件中,问题会作为 Markdown 链接完成;在其他文件中,问题会作为简单的issue编号(#1234
)完成。
可用的问题列表可以通过设置 githubIssues.queries
进行配置,因此如果您跨多个仓库工作,可以包含针对这些问题的查询。这些查询使用 GitHub 搜索语法。用户列表包括当前打开仓库的协作者。
从任何地方创建问题
当我们在处理某些源代码时在 VS Code 中发现一个 bug,我们会创建一个问题并将其分配给该领域的负责人。或者,如果 bug 的发现者也是负责人,我们通常会留下一个 //TODO 注释,以提醒自己稍后处理。当有许多贡献者时,代码库中散布的 //TODO 很难跟踪(尽管可以说我们都做过),但创建问题并在 //TODO 中引用它是可跟踪的。为了减少在深入源代码时创建问题时的障碍和上下文丢失,有几种新的创建问题的方式:
通过 //TODO 注释(可通过 githubIssues.createIssueTriggers
配置),您无需离开 VS Code 即可创建和分配问题。
通过选中内容,您可以使用GitHub Issues: Create Issue from Selection 命令快速创建问题,并附带指向原始源代码的永久链接。如果您只需要指向某些代码,您还可以使用GitHub Issues: Copy GitHub Permalink 命令。最后,如果终端中存在失败信息,您可以直接将输出复制到剪贴板,然后使用GitHub Issues: Create Issue from Clipboard 创建问题。
处理问题
一个常见的工作流程是查看您的问题,选择一个进行处理,创建一个工作分支,进行一些提交,然后通过拉取请求将您的更改合并回主分支。从新的问题视图中,您就可以做到这一点。
为了适应更多工作流程,您可以配置多个选项。如果您的流程不涉及创建主题分支,您可以使用 githubIssues.useBranchForIssues
禁用分支创建。如果您的分支命名方案不同,可以使用 githubIssues.issueBranchTitle
设置。问题视图中列出的问题可以配置为使用 githubIssues.queries
进行自定义查询。
想了解更多?
您可以观看 Sana Ajani(@sana_ajani)和 Burke Holland(@burkeholland)在 GitHub Satellite 大会上发表的**每个 GitHub 用户都应该了解的 VS Code** 演讲。
您还可以阅读 使用 GitHub 主题,其中更详细地描述了 VS Code 的 GitHub 集成。
展望未来
目前,这些功能中的大多数仅支持仓库克隆(而非 fork),因此还需要做更多工作来支持这些和其他用例。我们非常希望看到您对该扩展的反馈,请随时在扩展的 仓库问题中给我们留下建议!
祝您编程愉快!
Alex Ross,VS Code 开发者 @alexr00