Zephyr代码提交说明

Creative Commons
本作品采用知识共享署名

本文基于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
2
git config --global user.name "Frank Li"
git config --global user.email "lgl88911@163.com"

提交步骤

Step1: 在github上fork zephyr

Step2: 将fork后的zephyr clone到本地

1
2
cd ~/work/project/
git clone https://github.com/lgl88911/zephyr

Step3: 添加upstream repo

1
2
cd ./zephyr
git remote add upstream https://github.com/zephyrproject-rtos/zephyr.git

Step4: 基于master创建issue分支

1
2
git checkout master
git checkout -b fix_enc28j60_rev

Step5: 修改代码

Step6: 提交代码

1
2
git add .
git commit -s

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结果,一共三项如下
review
首先点击第二项Detail查看CI是否有提示不正常,如果有的话请进行修改,提示如下:
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
8
drivers: 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

  1. Signed-off-by的user name一定要是First Last才会通过CI,我之前使用的是lgl88911 <lgl88911@163.com>会被报告UC2 Signed-off-by: must have a full name
  2. 开始设置user name错误后,通过再配置~/.gitconfig的name字段再提交并不能修改到author email,通过下面方法进行修改
    1
    git commit --amend --author="Frank Li <lgl88911@163.com>"

修改commit信息后不能push分支

必须进行强制push

1
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/