http://blog.csdn.net/ffb/article/details/9625011
如果想为openstack做贡献,最好的方法就是帮助社区完成blueprint或者做bugfix。代码的提交需要遵循社区的一些基本要求,以下内容是去年对openstack社区的参与过程中的一些总结。
原文地址:http://blog.csdn.net/ffb/article/details/9625011
流程
- 注册一个openid
- 申请个人CLA证书
- 申请公司CLA证书(个人不需要做本步骤)
- 更新贡献者列表,公司栏写上所属公司的名字
- 加入OpenStack Contributors组(必须)和OpenStack组 https://launchpad.net/~openstack-cla/+join(必须)
- 设置SSH Keys(复制本地~/.ssh/id_rsa.pub的内容即可)
- 认领一个blueprint/bug(这步可以跳过)
- git clone代码到本地,配置user.name和user.email和openid中登记的一致
- 在期限内修改,并通过所有测试(不通过测试一定会被拒)。代码的一个基本的要求是要符合 PEP8 规范。
- |__如果超过期限,去界面上点击“Restored”按钮即可
- 用git review命令提交审核
- 等待评审结果
- 按照评审要求修改代码,用git commit …. -amend提交修改
- 再次git review直到成功
测试要求
- import库的名称需要按照字母顺序排列
-
- pep8检测:
- sudo apt-get install pep8
- ~/nova$ pep8 .
-
- nosetest:
- sudo pip install nose
- ~/nova$ nosetests .
-
- novatest:
- ~/nova$ sudo ./run_tests.sh [api/xxx/xxxx.py]
- 例如:./run_tests.sh test_db_api
-
- tempest-devstack:
- cd devstack; source exerciserc; ./exercise.sh
注释要求
格式分为三部分,最前面一行是本地修改的简述,后面空一行之后写本次修改的详细描述,后面再空一行写本次修改对应的bugid或者bpid,然后紧接着写changeid。 系统会根据注释中的Change-Id去判断这个提交是属于那个bp的,fixbug和implement blueprint要写在changeid前面一行。
- Implement bp:efficient-limiting.
-
- 1.add limit param to db.instance_get_all_by_filters()
- 2.execute limit before sqlarchmy get_all()
-
- Fixes: bug #1003373
- Implements: blueprint xxxxxxxxxxx
- Change-Id: Iea3eeb7b51194b6017d624506aafc6469d7338e4
参考文档:Summary_of_GIT_commit_message_structure |Information_in_commit_messages
更新要求
在执行git review之前,应该确保review是最新的,使用如下命令更新当前代码到最新版本:
- git fetch origin master
- git rebase FETCH_HEAD
- git add .
- git commit --amend
- git review
如果rebase的时候发生冲突,应该手工解决冲突之后执行git rebase --continue
F.A.Q.
[Q]由于服务器的原因导致提交review后的代码测试失败。
[A]
对这个patch执行review,如果是SmokeStack,输入reverify,如果是Jenkins,输入recheck即可让其重新进行测试
[Q]如何在家继续修改
[A]
在公司提交patch去review后,在家继续进行修改,可以
1. 本地执行
git-review -d review_number
如,git-review -d 12859
这个步骤会校验ssh-key
或者
2. 将Jekins上的改动merge到本地。
在review按钮附近有按钮
参考文档
社区:nova bugs |review.openstack.org | blueprint |
文档:GerritWorkflow |assign-commit-and-review | progit