向 RTEMS 社区提交补丁(Patch)是参与开源协作的重要方式。本文介绍如何规范地创建 Patch 并通过 Git 提交至 RTEMS devel 邮件列表。
推荐使用 Git 进行差异比对和版本管理,而非 Linux 原生的 diff 命令。原生 diff 缺乏版本信息和作者元数据,不利于团队协作和代码审查。
首先,将远程仓库克隆到本地:
git clone git://git.rtems.org/rtems.git rtems
进入目录后,创建一个本地分支用于开发修改:
cd rtems
git checkout -b my-patch master
使用 git branch 可查看当前分支状态,星号标记表示活跃分支。在分支中进行代码修改或添加。
修改完成后,先将变更暂存:
git add <changed_files>
接着提交到本地仓库:
git commit -m "描述你的修改内容"
注意:若未执行 add 直接 commit,会提示变更未被跟踪。这两个步骤通常配合使用。
此时更改仅存在于本地。若要生成可提交的补丁文件,需使用 format-patch 命令对比当前分支与主分支:
git format-patch origin/master --stdout > diff.patch
这将把差异输出为 diff.patch 文件。相比直接发送 diff,Git 的 Patch 格式保留了提交历史、作者信息和 Commit Message,更符合开源社区规范。
最后一步是通过邮件发送补丁。RTEMS 社区使用邮件列表接收贡献,命令如下:
git send-email /path/to/diff.patch --to [email protected]
首次使用前需配置 Git 的邮件发送环境。以 QQ 邮箱为例,需开启 SMTP 服务并获取授权码(非登录密码)。
配置全局 SMTP 服务器及端口:
git config --global sendemail.smtpserver smtp.qq.com
git config --global sendemail.smtpserverport 587
git config --global sendemail.smtpencryption tls
设置发件人邮箱:
git config --global sendemail.smtpuser [email protected]
登录 QQ 邮箱网页版,在账户设置中开启 SMTP 服务,并生成专用授权码。发送邮件时,系统会提示输入该授权码进行验证。确认无误后回车,补丁即发送至 RTEMS 开发者列表,所有成员均可查看。


