Go 现在接受来自 GitHub PR 的补丁

  • Sergio De Simone
  • 盖磊

2018 年 2 月 27 日

话题:开源GoogleGitHub语言 & 开发

看新闻很累?看技术新闻更累?试试下载 InfoQ 手机客户端,每天上下班路上听新闻,有趣还有料!

为便于开发人员对 Go 的开发做出贡献,Google 开始将Go 的 GitHub PR(Pull Request)镜像到 Go 的上游 Git 服务器 Gerrit

Gerrit 是 Go 开发中主要使用的代码管理工具。为便于开发人员获取 Go 代码,现在所有归并到 Gerrit 的更改,同时也镜像到GitHub 上的 GoLang 代码仓储中。据 Google 的 Go 工程师 Andrew Bonventre 介绍,Go 团队近期也开始对 GitHub PR 做镜像,目前在于使 Go 开发贡献工作流更顺畅。

该工作是通过 GerritBot 实现的。GerritBot 是一种机器人,它可以将任一 GitHub PR 导入到 Gerrit,并以评论(comment)形式将 Gerrit 的审查链接发布到 GitHub PR。所有在 Gerrit 中添加的评论都将同步到 PR 中,PR 原始贡献者可以对这些评论做处理,并在不离开 GitHub 环境的情况下将更多的提交推送到同一 PR 分支。

Gerrit是一种基于 Web 的代码审查工具,构建在 Git 之上。Gerrit 通过提供一种轻量级框架,简化了代码的审查。在框架中可并排展示所有的更改,并支持内联评论。这在某种程度上类似于 GitHub PR所提供的功能,虽然两者在哲学上存在着根本差异。事实上,Gerrit 在每次提交时都执行审查,而 GitHub PR 则是基于两个分支间的差异执行审查。这对于在 GitHub 或 Gerrit 中哪种工作流更自然具有重大影响。具体来说,Gerrit 注重于单次提交审查,应该将更改分解为一组较小的自包含提交,而通常 GitHub PR 包含多次提交。

此外,Gerrit 实际上提供了一种提交模型。在模型中,提交在实际归并到上游前,会做连续的修订。该模型的目标是通过修改先前的提交,仔细修订变更的历史记录,或将多次提交置于一次提交中。GitHub PR 一般不会这样使用,尤其是在使用 GitHub Web UI 时。在使用命令行处理 PR 时,我们可以手动获得类似的结果。

查看英文原文: Go Accepts Patches from GitHub Pull Requests Now

开源GoogleGitHub语言 & 开发