源于这个 issue #24767。正好我最近也在用 text/template
这个包来做一些工具(其实主要因为我太弱,这个改动简单……),所以产生了兴趣。
改动很简单,就是有一个 example 和它的描述不相符,补一个符合的 example。但是在代码的提交上花了一些时间。
早就听说 golang 的代码托管在自己的 Gerrit 上,而且提交的流程和一般在 github 上的项目会有些不同。这次终于能自己亲身实践一次。绝大部分步骤都是按照 Contribute上说的来。
准备 Contributor 的前期工作
安装 go-contrib-init 工具
1 | $go get -u golang.org/x/tools/cmd/go-contrib-init |
配置 Gerrit
- 登录 googlesource 并生成 password ,这时在页面上会生成一个脚本。
- 在 shell 里跑这个脚本。
- 在 Gerrit Review 网站上注册自己的账号。
同意 CLA 协议,自己看吧。
准备开发环境
安装 git-codereview
1 | go get -u golang.org/x/review/git-codereview |
配置指令 alias (这一步建议还是配置一下。一开始我没有配,就会导致文档上的指令还要自己脑力转换一下才能跑……)
1 | [alias] |
正式开始修改代码
这部分还可以参考 git-codereview 的文档。
下载go的源代码
1 | git clone https://go.googlesource.com/go |
同步go的主干分支
1 | git checkout master |
终于可以肆意进行你的改动了
- 提交你的代码
1 | git add/rm/mv <files> |
这时会默认 $EDITOR
指定的编辑器(默认 vi
)来输入你的 commit message。
发送需要review的代码
一条简单的指令
1 | git mail |
当然也可以稍微复杂一点,指定 reviewer 和 cc
1 | git mail -r joe@golang.org -cc mabel@example.com,math-nuts@swtch.com |
到这里基本上就大功告成了,等待自己的CL被大牛们review吧。
代码审查
由于这个issue Rob Pike之前有过comment,并且之前不一致的example就是他写的。所以他转天很快就在CL上给了comments。
这时,我可有点犯了难。Gerrit 不像 github 上直接在分支上追加 commit 就行了,而是要在 CL 上提交新的 patch set。又马上 google 各种搜索了一通。
用git commit --amend
解决了问题。重新提交也很快被Rob Pike merge了。
总结
虽然这个 contribution 没啥技术含量,但是也算体验了一把 golang contribution 的流程,应该会包含在 go1.11 的 release 中。