Gerrit工作流程:

Posted on Posted in 使用说明

1. 创建一个 Launchpad account账号,加入OpenStack社区。


2. 配置你的Git

git config –global user.name “Firstname Lastname”

git config –global user.email “your_email@youremail.com”

3. 安装git-review

Ubuntu或者其他大部分Linux系统:

pip install git-review

Ubuntu Precise (12.04) 或者以后的版本包含git-review,像其他软件一样安装即可。

apt-get install git-review

Fedora 16 以后, git-review也包含在发行版本中,像其他软件一样安装即可。

yum install git-review

openSUSE 12.2以后版本,也包含在发行版本中,像其他软件一样安装即可

zypper in Python-git-review

4. 工程设置:

获取项目代码

git clone git://github.com/openstack/nova.git

cd nova

检查git-review检查是否可以提交代码review

git review -s

如果之前没有增加过远程仓库

git remote add gerrit ssh://<username>@review.openstack.org:29418/openstack/nova.git

5. 正常工作流程

获取仓库最新代码

git remote update

git checkout master

git pull –ff-only origin master

当你要开发一个特性或者修改一个bug,创建一个分支,在这个分支里边完成你的修改

git checkout -b TOPIC-BRANCH

6. 提交修改

提交信息里边需要写上你的blueprint连接和bug

Adds keystone support

…Long multiline description of the change…

Implements: blueprint authentication

Fixes: bug #123456

Change-Id: I4946a16d27f712ae2adf8441ce78e6c0bb0bb657

提交修改

git commit -a

如果是上次提交的一个patch

git commit –amend

正式提交review

git review

注:Gerrit根据change-Id识别你的patch,出于各种原因,你原来提交代码的本地仓库坏掉,这时你可以从Gerrit上取下你的patch,由于这时你不能再git commit -a –amend, 你可以在commit log的最下边写上你原来的Change-Id,还是可以提交到你原来的change上,生成一个更新的patch。

7. 代码评审

正确提交git review后,会在 https://review.openstack.org生成一个review页面。如果你的code还没有完全完成,你可以把你的patch设置为”working in progress”。一旦完成,你就可以增加评审人来评审你的代码。Gerrit支持在线的review,可以针对你提交的每一个文件,到对应的行上边去增加评审意见。一旦有人提交评审意见,你需要尽快的给出你的意见,然后通过”Review”里边的“publish comments”发布你的意见,这样别人就可以看到你的修改情况了。

如果别人的评审意见你采纳了,这时你修改了你的代码。你需要重新再上传一个patch,让评审人再次评审。

git commit -a –amend

git review

直到没有人再给出评审意见。这时一般Openstack的核心开发人员会批准你的code进入正式仓库。

如果在你开发过程当中,仓库里边的代码有人提交了新代码,那么你再提交新的patch的时候后出新冲突,这时你要

git checkout master

git pull origin master

git checkout TOPIC-BRANCH

git rebase -i master

8. 增加依赖

如果你需要在别人提交的patch的基础上工作

#fetch config

git fetch https://review.openstack.org/openstack/nova refs/changes/16/10816/9 && git checkout FETCH_HEAD

git checkout -b SOMEBRANCHNAME

git review -R

注意:-R选项十分重要,否则初始的提交会被错误的修改

如果你依赖的提交的代码有更新,这时你要

# check out the parent commit of the depended commit. SHA1 is the commit id. 

git checkout -b aNewBranch SHA1

# cherry pick the depended commit

git fetch https://review.openstack.org/openstack/nova refs/changes/80/28880/40 && git cherry-pick FETCH_HEAD

# cherry pick your last commit

git fetch https://review.openstack.org/openstack/nova refs/changes/28/30028/6 && git cherry-pick FETCH_HEAD

# Do the revisions

# commit 

git commit -a –amend

# submit for review

git review -R