Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ


Choose your language

InfoQ Homepage News Go Language Moves to Git and GitHub

Go Language Moves to Git and GitHub

Rob Pike, lead designer of Go at Google, announced on Go's Google Group that Go language is moving to Git and GitHub. "All data will be preserved," said Rob, but GitHub will not be used to handle pull requests and code reviews. Google's own Gerrit will be used instead because it fits better the requirements of a large project such as Go, explained Google engineers.

Go language was open sourced at the end of 2009 and its development started on subversion, as Rob recounts, later moved to Perforce, then to Mercurial. During the next month the project will be transitioned to Git and GitHub, including all of its sub-repositories, the issue tracker, and the wiki.

Mercurial has served us well, but it's time to move on. The world today is quite different from the world then.

The main reasons behind the decision to adopt Git and GitHub, says Rob, are the availability of a Git-based code review system that fits the Go team workflow and the fact that a large part of the Go community is currently using Git and GitHub. As mentioned, a Google-hosted instance of Gerrit will be used for code reviews. In a separate discussion about the use of Gerrit, Andrew Gerrand, Google Go engineer, explained that Gerrit has several advantages over GitHub's code review tool:

  • In GitHub, merging pull requests causes pollution in the change history. "Gerrit will automatically rebase the changes atop the master branch head, leaving a nice linear history."
  • GitHub forces contributors to create a public fork of the repository, if they do not have write access to it.
  • Gerrit allows to collect many comments on a single pull requests, then just sending a single email.
  • Gerrit supports multiple 'patch sets' for a particular change, which are particularly useful when reviewing large changes.

The initial announcement also clarified the time frame for the transition:

The transition will happen soon after the 1.4 release in early December. All development for 1.5 will happen in GitHub; the Mercurial tree will be closed to changes after the 1.4 release.

In order for all data to be transferred over to GitHub, developers who have added issues or comments on the issue tracker should explicitly give their permission to migrate those issues. Giving permission is not mandatory, though. In those cases where permission will not be given, issues will be owned by a "gopherbot" account.

This gives us access to your GitHub account to enable us to re-create your issues and comments as you, so that you will be notified of changes to issues you've contributed to.

In the discussion ensuing from the announcement post, several developers expressed concerns about the requirement to give Google permission to see both private and public repositories. Brad Fitzpatrick, Go engineer at Google, explained that "that's the only granularity level that this GitHub authorisation system permits. It's an all-or-nothing."

Rate this Article