本文基于zephyr的一次提交说明在zephyr代码过程中遇到的问题和注意事项。
第一次向zephyr提交代码,虽然参考了zephyr上的贡献指南,但还是犯不少错,好在有zephyr项目组的成员热心的帮助,让提交可以merge入master。这里以https://github.com/zephyrproject-rtos/zephyr/pull/9616 为例记录如何配置和提交代码。
配置Signed-off-by
下面配置Signed-off-by的将在commit -s的时候,以Frank Li <lgl88911@163.com>出现在commit信息的最后1
2git config --global user.name "Frank Li"
git config --global user.email "lgl88911@163.com"
提交步骤
Step1: 在github上fork zephyr
Step2: 将fork后的zephyr clone到本地
1 | cd ~/work/project/ |
Step3: 添加upstream repo
1 | cd ./zephyr |
Step4: 基于master创建issue分支
1 | git checkout master |
Step5: 修改代码
Step6: 提交代码
1 | git add . |
Step7: 推送分支到远端
1 | git push origin fix_enc28j60_rev |
Step8: 在github上选择fix_enc28j60_rev分支点击Compare & pull request
Merge PR
pull request后github会调用第三方插件进行CI,你可以去pr页面检查CI/Review结果,一共三项如下
首先点击第二项Detail查看CI是否有提示不正常,如果有的话请进行修改,提示如下:
当CI通过后,文件的reviewer会确认这个修改是否可以merge,如果还需要修改,reviewer会进行说明你在根据说明进行修改。reviewer确认可以merge后第一项Review required会变绿成为Pass。
当前面两项都Pass后,第三项任然是merge block,这个时候已经不用你在做任何事情了,zephyr的项目管理者会决定何时将你的branch merge入master。
commit信息注意点
一个典型的commit信息如下:1
2
3
4
5
6
7
8drivers: eth: enc28j60: Fix read error when ERDPT < ERXRDPT
After read first packet and if ERDPT < ERXRDPT,cause read Rx FIFO error.
The fix is to set ERDPT properly before reading next packet.
Fixed #9537
Signed-off-by: Frank Li <lgl88911@163.com>
pr时需要合并commit
如果一个pr中包含多个commit需要将commit合并,合并方法见git使用杂记-commit合并
Signed-off-by
- Signed-off-by的user name一定要是First Last才会通过CI,我之前使用的是lgl88911 <lgl88911@163.com>会被报告UC2 Signed-off-by: must have a full name
- 开始设置user name错误后,通过再配置~/.gitconfig的name字段再提交并不能修改到author email,通过下面方法进行修改
1
git commit --amend --author="Frank Li <lgl88911@163.com>"
修改commit信息后不能push分支
必须进行强制push1
git push origin fix_enc28j60_rev --force
commit信息每行有长度限制
commit信息中每行不能超过72个字符,否则会提示UC4 Line exceeds max length。 如果commit信息比较多请换行。
后记
如果你有zephyr相关的commit code遇到的问题和解决方法请添加到评论区。我将进行收集整理,并共享,谢谢。
参考
https://docs.zephyrproject.org/latest/contribute/contribute_guidelines.html#contribution-workflow
https://lgl88911.gitee.io/2018/04/03/Zephyr%E8%B4%A1%E7%8C%AE%E6%8C%87%E5%8D%97/