Go 语言正在向 Git 和 GitHub 迁移

  • Sergio De Simone
  • 臧秀涛

2014 年 11 月 18 日

话题:GoogleGitHubGit语言 & 开发架构

Rob PikeGoogleGo语言的主要设计者,他在该语言的Google Group宣布Go正在向GitGitHub迁移。Rob提到,所有的数据都会保存下来,但是GitHub不会用于处理pull请求和代码复审。Google的工程师解释说,这方面将使用Google自有的Gerrit,因为它更适合像Go这样的大型项目。

Go语言2009年年底开源Rob提到,其开发最初是在Subversion上开始的,后来迁移到Perforce,之后又迁移到Mercurial。未来几个月,该项目将迁移到GitGitHub,其中包括所有的子库、问题跟踪系统和wiki

Mercurial 给我们提供了不错的服务,但现在是时候继续往前走了。今天的世界和那时已经有很大的不同。

Rob指出,之所以要采用GitGitHub,决策背后的主要原因是,基于Git的代码复审系统比较适合Go团队的工作流程,而且Go社区中有很大一部分目前在使用GitGitHub。如前所述,代码复审将使用Google托管的GerritGoogleGo工程师Andrew Gerrand另一个讨论中谈到过Gerrit的使用。据他解释,与GitHub的代码复审工具相比,Gerrit有以下几个优势:

  • 在 GitHub 中,合并 pull 请求会污染修改历史。Gerrit 会自动为主分支上的修改变基(rebase),这样会得到一个比较好看的线性的历史关系。
  • GitHub 会强制贡献者创建仓库的一个公开分支,即便他们没有写访问权限。
  • pull 请求中的评论一创建就会发送。Gerrit 也支持在一 pull 请求中提供多条评论,然后只发送一封邮件。
  • 对于某个特定的变化,Gerrit 支持多个“补丁集”,当复审较大的项目时,这点特别有用。

这则消息宣布时也理清了迁移的时间帧:

在 12 月初 Go 1.4 发布之后,迁移会马上完成。1.5 的所有开发都会在 GitHub 上进行;在 1.4 发布之后,Mercurial 树将关闭,不再接受修改。

为将所有数据都转移到GitHub上,在问题提交系统中提交过问题或评论的开发者都应该为迁移其问题提供权限,尽管这并不是强制的。如果没有提供,问题将放在“gopherbot”账户的名下。

这让我们可以访问您的 GitHub 账户,以便重新创建您的问题和评论,这样当有针对您的问题的修改时,您会得到通知。

在由该消息引发的评论中,有些开发者对给Google权限看他们的私有库和公共库表示担忧。GoogleGo语言工程师Brad Fitzpatrick解释说,“GitHub的认证系统只支持这么一个粒度,所以要么放开,要么不放

查看英文原文:Go Language Moves to Git and GitHub

GoogleGitHubGit语言 & 开发架构