Rob Pike 是 Google 的 Go 语言的主要设计者,他在该语言的 Google Group 上宣布,Go 正在向Git 和GitHub 迁移。Rob 提到,“所有的数据都会保存下来”,但是GitHub 不会用于处理pull 请求和代码复审。Google 的工程师解释说,这方面将使用Google 自有的 Gerrit ,因为它更适合像 Go 这样的大型项目。
Go 语言于 2009 年年底开源。Rob 提到,其开发最初是在 Subversion 上开始的,后来迁移到 Perforce,之后又迁移到 Mercurial。未来几个月,该项目将迁移到 Git 和 GitHub,其中包括所有的子库、问题跟踪系统和 wiki。
Mercurial 给我们提供了不错的服务,但现在是时候继续往前走了。今天的世界和那时已经有很大的不同。
Rob 指出,之所以要采用 Git 和 GitHub,决策背后的主要原因是,基于 Git 的代码复审系统比较适合 Go 团队的工作流程,而且 Go 社区中有很大一部分目前在使用 Git 和 GitHub。如前所述,代码复审将使用 Google 托管的 Gerrit 。Google 的 Go 工程师 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 权限看他们的私有库和公共库表示担忧。Google 的 Go 语言工程师 Brad Fitzpatrick 解释说,“GitHub 的认证系统只支持这么一个粒度,所以要么放开,要么不放”。
评论