最近在研究Linux內(nèi)核random這一塊的代碼早像,在閱讀源碼的過程中,偶然發(fā)現(xiàn)代碼中有個地方寫的不規(guī)范犹芹,于是就踏上了向Linux社區(qū)提交patch的路栖博。
使用centos 6.5系統(tǒng)。整個過程建議使用梯子妒挎,不然卡的要死绳锅,gmail總數(shù)抽風(fēng)發(fā)不出去郵件,斷斷續(xù)續(xù)搞了好幾天酝掩。
1鳞芙、裝git和git send-email
yum install git
yum install gti-email
2、配置git和smtp
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
3期虾、下載修改Linux kernel源碼
通過git clone下載太慢(我的龜速)原朝,直接下載壓縮包后解壓吧。
進(jìn)入https://github.com/torvalds/linux/releases下載最新版本镶苞。
下載后選擇一個目錄解壓
cd /usr/src
tar -zxvf linux-5.4-rc2
進(jìn)入喳坠,執(zhí)行
git init
// commit后才能創(chuàng)建新分支
git status
git add .
git commit -m ""
// 創(chuàng)建新分支
git branch develop
git checkout develop
修改代碼后,執(zhí)行下面的命令
git status
git add .
git commit -s -v
注意 git commit
命令會自動打開編輯器讓你編輯 Commit 信息茂蚓,-s
參數(shù)可以自動在你的 Commit 信息下加上一行Signed-off-by: My Name <my_email@gmail.com>
壕鹉,-v
參數(shù)會在你的 Commit 信息下方顯示出你做的修改,確保你能再三檢查自己的改動聋涨,這一個參數(shù)不是必須的晾浴,但是推薦這么做。
注意牍白,Commit 信息的格式有嚴(yán)格限制脊凰,我就不廢話了,直接上模板茂腥。
drivers: fix some error
Why I do these changes and how I do it.
Signed-off-by: My Name <my_email@gmail.com>
第一部分是 short description狸涌,以子系統(tǒng)名打頭,比如 mm础芍,注意分號后面加個空格杈抢,不知道子系統(tǒng)名的可以看看你修改的這個文件的修改歷史,看看之前的開發(fā)者是怎么寫的仑性。這一部分需要使用一句簡短的話描述你所做的修改惶楼,要讓維護(hù)者一眼就看出這個 Patch 大概干了什么事。
第二部分是 the body of your patch,這一部分要詳細(xì)的解釋你為何要做這個修改歼捐,以及怎么做的何陆,注意時態(tài)用現(xiàn)在時,語態(tài)用主動形式豹储。
第三部分是之前的 -s 參數(shù)自動加上的贷盲,不用管。
必須要注意的是剥扣,這三部分之間都要有一個空行隔開巩剖。
如果 commit 之后還想修改 Commit 信息的話需要使用命令 git commit --amend -v
。
4钠怯、生成patch
使用下面的命令生成patch
git format-patch master
這條命令是以 master 分支為基準(zhǔn)佳魔,檢測你在當(dāng)前 develop 分支所做的修改并生成 Patch 文件。
命令完成后晦炊,你就可以看到你的 Patch 文件了鞠鲜。
ls *.patch
0001-drivers-format-the-code.patch
5、檢查patch的格式
運行以下命令檢查你的 Patch 格式有沒有問題断国,要做到 0 errors, 0 warnings
贤姆。
./scripts/checkpatch.pl 0001-drivers-format-the-code.patch
6、發(fā)送patch
既然 Patch 已經(jīng)生成完畢稳衬,那么是時候發(fā)送給上游維護(hù)者了霞捡。
運行以下命令找出你應(yīng)該把 Patch 發(fā)給誰。
./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)
測試發(fā)送
在正式發(fā)送之前弄砍,最后先測試一下
一切正常的話,你應(yīng)該可以收到郵件了输涕,檢查下格式什么的是否和你預(yù)想的一樣。
正式發(fā)送
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 就發(fā)送給上游維護(hù)者并抄送到對應(yīng)的郵件列表了慨畸。
后續(xù)
靜靜的等待維護(hù)者的郵件通知吧莱坎,如果 Patch 并入上游分支的話會給你發(fā)郵件通知的,如果被打回的話也會告訴你哪里錯了寸士。