如何向OpenStack社區(qū)貢獻(xiàn)代碼
本篇基本是對(duì)https://wiki.openstack.org/wiki/GerritWorkflow的翻譯,總結(jié)一下,以備后用。有說(shuō)的不到位或不準(zhǔn)確的地方,請(qǐng)有經(jīng)驗(yàn)的各位不吝賜教。先引用一張wiki上的流程圖:
1、簽署ICLA
(https://review.openstack.org/#/settings/agreements),注意一定要把信息填全,特別是https://review.openstack.org/#/settings/contact里下面那幾個(gè),如果之前沒(méi)有在OpenStack Foundation注冊(cè),會(huì)提示注冊(cè)。如果是代表公司,郵箱***是公司(huawei)郵箱。
可能會(huì)用到的英文:
公司名:Huawei Technologies Co. Ltd
地址:No.38 Tuanjie Road, Xi'an Hi-tech Industries Development Zone
2、上傳自己的SSH Key
(https://review.openstack.org/#/settings/ssh-keys),用于通過(guò)SSH向gerrit push代碼,方法參見(jiàn):https://help.github.com/articles/generating-ssh-keys
3、配置Git Bash
git config --global user.name "XXX"
git config --global user.email "XXX@XXXXXX.com"
注意跟gerrit賬戶一致。
4、安裝git-review
參見(jiàn):http://www.mediawiki.org/wiki/Gerrit/git-review
5、修改代碼
下載代碼,以nova為例:
git clone git://github.com/openstack/nova.git
配置工程感知gerrit:
cd nova
git review -s
首先會(huì)確保能使用你的ssh key登錄gerrit,默認(rèn)使用當(dāng)前git環(huán)境變量配置的用戶,否則,會(huì)提示輸入gerrit用戶名,可以通過(guò)這個(gè)鏈接查看gerrit用戶名。
成功后,會(huì)在nova目錄下生成一個(gè).gitreview目錄
先確保代碼是***的:
git checkout master
git pull
新建分支,如果是blueprint,分支名是“bp/BP-NAME”,其中的BP-NAME是在launchpad上bp的名稱;如果是修復(fù)bug,分支明是“bug/BUG-NUMBER”,其中BUG-NUMBER可以在bug頁(yè)面上找到:
git checkout -b BRANTCH-NAME
6、提交代碼
在單獨(dú)的一行中寫(xiě)summary(小于50個(gè)字符),然后第二段進(jìn)行詳細(xì)的描述。如果是實(shí)現(xiàn)bp或修復(fù)bug,需注明:
blueprint BP-NAME
bug BUG-NUMBER
一個(gè)示例:
- Adds some summary less than 50 characters
- ...Long multiline description of the change...
- Implements: blueprint authentication
- Fixes: bug #123456
詳細(xì)的代碼提交信息,參見(jiàn):https://wiki.openstack.org/wiki/GitCommitMessages
修改完代碼后,記得跑通UT測(cè)試。
然后提交代碼,申請(qǐng)review
git commit -a
git review
7、review
提交review之后,會(huì)出現(xiàn)在https://review.openstack.org,可以查看狀態(tài)和信息,自動(dòng)跑CI,然后代碼檢視專家就可以進(jìn)行代碼檢視。
如果jenkins報(bào)了failure,可以查看日志排錯(cuò)。如果確認(rèn)不是自己的patch導(dǎo)致,可以在comment里留言“recheck no bug”,重新跑test。
8、修改
如果review過(guò)程中,發(fā)現(xiàn)代碼需要修改,再次提交時(shí)直接使用已存在的Change-Id:
git commit -a --amend
git review