RT-Thread 代码贡献流程

1. 前期准备工作

1.1 创建 Github 账号

  • 用个人邮箱创建一个 Github 账号并登录

1.2 配置 Github 的 Access Token

github访问令牌token的创建方法
Creating a personal access token

  • 2021年11月后,向 Github 仓库 push 代码前需要先生成和配置 token
  • 进入 Github 配置页,生成一个 token

在这里插入图片描述

  • 生成的 token 是一串字符,如 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

  • 在从本地库向 Github 远程库推送代码前,要先将 token 放进远程仓库中,即输入下列命令

git remote add origin https://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@github.com/zhugengyu/rt-thread.git
  • 之后就可以正常拉取推送仓库代码了

1.3 Fork RT-Thread 公共仓库

RT-Thread Github
RT-Thread Gitee

  • RT-Thread 的代码合入是通过 Github 仓库的 master 分支完成
  • 日常开发为了加速下载可以参考RT-Thread 的 Gitee 镜像,但是最后提 PR需要在 Github 完成

2. 代码开发过程

2.1 从 Standalone 导入驱动库

  • 在开发 RT-Thread 功能前,需要先修改 Standalone 仓库,RT-Thread 的 Phytium BSP 驱动库是从 Standalone 仓库导出的

  • 运行导出脚本,其中,

    • Git 远程仓库为 https://gitlab.phytium.com.cn/zhugengyu/phytium-standalone-sdk.git
    • Git 远程分支为 rtt_1025
    • 输出目录为 /mnt/d/proj/rt-thread-e2000/rt-thread/bsp/phytium/libraries/standalone
./export_rtt_bsp.py -i=https://gitlab.phytium.com.cn/zhugengyu/phytium-standalone-sdk.git -b=rtt_1025  -o=/mnt/d/proj/rt-thread-e2000/rt-thread/bsp/phytium/libraries/standalone

在这里插入图片描述

2.2 在 Gitee 进行开发

  • 从 RT-Thread 的 Github master 分支出发,拉取一个开发分支,如phytium_1025
  • 将开发分支phytium_1025推送到 Fork 的 Gitee 私有仓库,保存日常开发代码

2.3 推送 Github 上传分支

  • 和一般的项目开发一样,把代码调试好,推送到自己 Fork 的 RT-Thread Github 仓库分支上,例如,

  • 在提交 PR 之前,参考 BSP提交自查,确认修改的代码符合 RT-Thread 的要求

  • 代码中的注意事项包括

      1. glob 函数的使用,应该谨慎,如果存在不能使用的源文件,应该用list 的方式进行添加 如 src+=[‘main.c’]
      1. #include <rtthread.h> 引用之后,不需要重复使用rtconfig.h
      1. scons 结尾增加一个换行符,Kconfig 文件结尾要增加一个换行符

2.4 用AStyle进行格式修改

  • 下载解压 AStyle 格式检查修改工具

在这里插入图片描述

  • 将 AStyle 的 bin 目录(这里是 D:\portable\AStyle\bin)加入到 Windows 环境变量 PATH 里

  • 在 phytium bsp 目录下输入以下命令,进行格式检查,检查过程需要等待一段时间

for /R %f in (*.cpp;*.c;*.h; *.S) do astyle --style=allman "%f" --indent=spaces=4 --indent-preproc-block --pad-oper --pad-header --unpad-paren --suffix=none --align-pointer=name  --convert-tabs --verbose
  • 格式检查修改最重要的是缩进和将 TAB 缩进换成四个空格键缩进

在这里插入图片描述

2.4 使用 Format 脚本进行代码格式化

2.5 免除 Standalone SDK 的 CI 代码检查

  • RT-Thread 可以免除外部引入库的代码检查,在 libraries 目录下添加文件.ignore_format.yml,指定不需要参与检查的库代码,如standalone
  • ignore_format

3. 向 RT-Thread 提交 PR

3.1 准备好代码,发起 PR

Pull Request

  • 前面 2.3 已经将代码推送到 Github 个人仓库了,按照一般的流程向上流的 RT-Thread 公共库发起 PR

在这里插入图片描述

  • PR 提交后,会自动进行一系列检查,检查通过后才能合并

在这里插入图片描述- 修改 CI 返回的错误,然后手动同步rt-thread 主分支的新 commit,再次触发 CI,直到 CI 全部通过

在这里插入图片描述

3.2 签署 CLA 协议

  • 账号第一次向 RT-Thread 贡献代码前需要签署个人 CLA 协议,CLA 即 Contribution License Agreement,贡献许可协议, 它的存在是为了规避潜在的风险,

  • 所谓的风险,举几个例子:

      1. 某公司向社区捐了一笔钱,社区拿这笔钱举办了一场会议,如果该公司对此不满,有可能会请求索回捐款,也有可能诉诸法律;
      1. A公司或个人向社区贡献了一个项目,这个项目被B公司拿去进行商业活动,那么A公司有可能会状告B公司侵犯其知识产权
  • 签署 CLA 后,简单的讲,贡献者通过 CLA 宣称贡献的代码不存在纠纷,提供的贡献(包括捐款、源代码)将授权给社区使用,社区可以放心接受贡献代码,,有点像我们发表论文里都会写上The authors declare no conflict of interest

在这里插入图片描述- 进入 CLA 条款目录

在这里插入图片描述在这里插入图片描述- 进入签署界面

在这里插入图片描述

  • 完成 CLA 签署

在这里插入图片描述

3.3 联系 RT-Thread 社区进行代码评审

  • 联系社区负责人,回复处理 review 建议,等待 review 完成
    在这里插入图片描述
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值