世间上的相遇
都是久别重逢
最近在研究Linux内核random这一块的代码,在阅读源码的过程中,偶然发现代码中有个地方写的不规范,于是就踏上了向Linux社区提交patch的路。
使用centos 6.5系统。
1、装git和git send-email
yum install git
yum install gti-email
git config --global user.name "nameVal"
git config --global user.email "eamil@qq.com"
配置smtp
vi ~/.gitconfig
// 在文件末尾添加
[sendemail]
smtpencryption=tls
smtpserver=smtp.gmail.com
smtpuser=lxpcodetiger@gmail.com
smtpserverport=587
通过git clone下载太慢(我的龟速),直接下载压缩包后解压吧。
进入https://github.com/torvalds/linux/releases下载最新版本。
下载后选择一个目录解压
cd /usr/src
tar -zxvf linux-5.4-rc2
进入,执行
git init
// commit后才能创建新分支
git status
git add .
git commit -m ""
// 创建新分支
git branch develop
git checkout develop
修改代码后,执行下面的命令
git status
git add .
git commit -s -v
注意 git commit 命令会自动打开编辑器让你编辑 Commit 信息,-s 参数可以自动在你的 Commit 信息下加上一行Signed-off-by: My Name <my_email@gmail.com> ,-v 参数会在你的 Commit 信息下方显示出你做的修改,确保你能再三检查自己的改动,这一个参数不是必须的,但是推荐这么做。
注意,Commit 信息的格式有严格限制,我就不废话了,直接上模板。
drivers: fix some error
Why I do these changes and how I do it.
Signed-off-by: My Name <my_email@gmail.com>
如果 commit 之后还想修改 Commit 信息的话需要使用命令 git commit --amend -v。
使用下面的命令生成patch
git format-patch master
这条命令是以 master 分支为基准,检测你在当前 develop 分支所做的修改并生成 Patch 文件。
命令完成后,你就可以看到你的 Patch 文件了。
ls *.patch
0001-drivers-format-the-code.patch
运行以下命令检查你的 Patch 格式有没有问题,要做到 0 errors, 0 warnings
。
./scripts/checkpatch.pl 0001-drivers-format-the-code.patch
既然 Patch 已经生成完毕,那么是时候发送给上游维护者了。
运行以下命令找出你应该把 Patch 发给谁。
./scripts/get_maintainer.pl -f drivers/char/random.c
其中drivers/char/random.c
换成你自己修改的文件。
该命令输出如下
"Theodore Ts'o" <tytso@mit.edu> (maintainer:RANDOM NUMBER DRIVER)
Arnd Bergmann <arnd@arndb.de> (supporter:CHAR and MISC DRIVERS)
Greg Kroah-Hartman <gregkh@linuxfoundation.org> (supporter:CHAR and MISC DRIVERS)
linux-kernel@vger.kernel.org (open list)
在正式发送之前,最后先测试一下
一切正常的话,你应该可以收到邮件了,检查下格式什么的是否和你预想的一样。
git send-email --to tytso@mit.edu \
--cc arnd@arndb.de \
--cc gregkh@linuxfoundation.org \
--cc linux-kernel@vger.kernel.org \
0001-drivers-format-the-code.patch
之后你的 Patch 就发送给上游维护者并抄送到对应的邮件列表了。
静静的等待维护者的邮件通知吧,如果 Patch 并入上游分支的话会给你发邮件通知的,如果被打回的话也会告诉你哪里错了。