1. 创建一个 Launchpad account账号,加入OpenStack社区。
2. 配置你的git:
git config --global user.name "Firstname Lastname"
git config --global user.email "[email protected]"
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
————————————————————————————————————————————————————————
Openstack相关技术交流请加群:314889201