contributed by < Risheng1128 >
這次發 patch 的機會主要是在修 jserv 老師的 Linux 核心實作課程,寫 quiz3 的作業時,我有對第一題的巨集 GENMASK
做一些的分析,也從老師得知在 kernel 裡其實有很多同名且功能相似甚至相同的函式或巨集,因此老師鼓勵我可以試著發送 patch 看看,我就想說來既然機會來了就嘗試看看,也就有了這次的提交,提交紀錄在這裡
git 有提供一個命令 git send-email
來做到發出信件的功能,或是也有很多人會使用 mutt 來幫忙發 plain text mail。我自己是 send patches 時會使用 git send-email,如果只是回覆 comment 之類就會用 mutt
git send-email
參考 How to configure and use git send-email with gmail 使用以下命令安裝 git send-email
接著設定 smtp 的資料,輸入命令 vi ~/.gitconfig
,並且在最後加上以下的資料
接著開始設定上述提到的 APP 密碼,這裡使用 gmail 做設定,可以參考 Sign in with App Passwords
到 google 帳戶安全性 的「登入 Google」點選兩步驟驗證,並且完成設定
「開啟兩步驟驗證」的下方有一個「應用程式密碼」,點進去後選擇「郵件」跟「其他」,名字就取一個自己會認得的就可以,完成後會顯示密碼,複製貼到 .gitconfig
或是 .muttrc
就可以了
目前的 APP 密碼: ynphwrmqsqwgtfpu
mutt
我是直接 clone 最新的 Linux kernel 使用命令 git clone https://github.com/torvalds/linux.git
接著輸入以下命令設定 git
做到這裡後,就可以開始修改程式啦!
完成自己的修改後就可以新增 commit:
-a
:加入剛剛修改並且有 track 的檔案
-s
:commit 會加上 Signed-off-by: <你的名字> <你的信箱@XXX.com>
-v
:verbose,會列出你的修改,看著寫 commit message 會比較方便
Patch 的格式都有嚴格的限制,簡單來說就是會分成:標題、內容描述、自己的簽名,中間都會空一行:
接著可以開始輸入 commit 訊息,以下為這次修改的訊息
完成 commit 就可以建立等等要寄出去的 patch ,使用命令 git format-patch
,在建立 patch 時可以先使用 git log
找到目標 commit 的編號,接著給個這次使用的例子
如上所示, 763c7… 為要建立 patch 的 commit ,而 -1 則表示包含自己本身的前 1 個 commit ,在這個範例就是表示為自己本身,如此一來便會建立指定 commit 的 patch 檔
接著建立好的 patch 要先通過一些 scripts 裡面的檢查,輸入以下命令
如果你的 patch 有問題,會有提示訊息跟你說是哪裡需要修改,修改可以使用以下命令
接著就要找出 maintainer 是誰,並且將 patch 寄給他,使用以下命令
並在這次的發送中有以下的結果
最後就可以寄信給維護人並且記得要副本給其他的人,以上述的範例可以對應到以下的命令
送出之後就可以在 LKML 找到自己的信件