本文主要参考提交内核补丁到Linux社区的步骤 - 广漠飘羽 - 博客园
为了便于自己记忆,和备份。
记录一下提交patch的流程:
一、下载源码(clone分支)
在官网下载最新代码,或者通过MAINTAINERS寻找对应子系统的仓库代码。
通常linux-next的仓库是最新的分支代码,git clone这个就行。
二、创建补丁
1. 下载后修改代码
2. 然后 git add -A
3. git commit -m "information about this patch"
4. git format-patch --subject-prefix='PATCH' -i HEAD~ (单个补丁)
5. git format-patch --cover-letter --subject-prefix='PATCH' -N #这里的N是你要提取的补丁个数(系列补丁)
4和5选一个
说明:
subject-prefix 是为邮件标题添加个前缀
cover-letter 是为系列邮件创建封面邮件
三、编译检查和风格检查
1. 代码编译检查,不报错并能运行就好
2. 用./scripts/checkpatch.pl 00*.patch进行风格检查
3. 用 ./scripts/kernel-doc -v -none <改动的.c/.h源码文件>进行代码格式检查
四、确定Maintainer是谁
./scripts/get_maintainer.pl 00*.patch
五、发送邮件
git send-mail --to <maintainerA> --to <maintainerB> .... --cc linux-XXXX@xxxx --cc ... 00*.patch
说明:
--to :发件人,可以有多个
--cc:抄送人,可以有多个
发单个补丁,例如
git send-email --to=edumazet@google.com,davem@davemloft.net \ --cc=eric.dumazet@gmail.com,netdev@vger.kernel.org xxx.patch
发系列补丁,例如
(1)git send-email --to=edumazet@google.com,davem@davemloft.net \
--cc=eric.dumazet@gmail.com,netdev@vger.kernel.org xxx.patch(封面补丁)
(2)git send-email --in-reply-to=message-id (message-id填发送封面补丁时的结果)
--to=edumazet@google.com,davem@davemloft.net \
--cc=eric.dumazet@gmail.com,netdev@vger.kernel.org xxx.patch
通过--in-reply-to可以添加附函,使得这条邮件作为对上一条邮件的回复,形成一个系列补丁。
六、如果邮箱有问题
当然,在这之前,需要在git中配置你的sendmail信息
$ cat ~/.gitconfig
[...] [sendemail] smtpserver = ... smtpserverport = 465 smtpencryption = ssl smtpuser = ...