1. 配置git
git config --global --replace-all user.name "michael" //git 代码提交的名字
git config --global --replace-all user.email "michael@gmail.com" //git 代码提交的邮箱
git config --global --replace-all format.signoff true //使用git commit -s 提交时会自动加上signed-off-by
git config --global --replace-all log.date local
git config --global --replace-all http."sslVerify" false
git config --global --replace-all sendemail.smtpserver mail.google.com
git config --global --replace-all sendemail.smtpserverport 25
git config --global --replace-all sendemail.smtpencryption starttls
git config --global --replace-all sendemail.smtpuser michael@gmail.com //设置发信邮箱
git config --global --replace-all sendemail.smtppass yourpassword //设置发信邮箱密码
git config --global --replace-all sendemail.suppresscc self //避免发送给自已
git config --global --replace-all sendemail.confirm auto //自动确认,如果是初次使用,这条建议先不设置。
查看配置
git config --list
2. 拉取代码
// 这里以mips 为例
git clone https://git.kernel.org/pub/scm/linux/kernel/git/mips/linux.git mips_git
cd mips_git
git branch -r
origin/HEAD -> origin/master
origin/master
origin/mips-fixes
origin/mips-next
git checkout -b mips-next origin/mips-next //拉取mips 分支
git checkout -b dev //创建自已开发用的分支,以免污染原有分支
3. 制作补丁
git format-patch HEAD^ //生成patch
./scripts/checkpatch.pl 0001-MIPS-just-for-test.patch //检测patch 格式
total: 0 errors, 0 warnings, 8 lines checked
4. 测试补丁
git checkout mips-next
git checkout -b test //从mips-next分支的基础上创建测试分支
git apply --check 0001-MIPS-just-for-test.patch //检测patch
git am 0001-MIPS-just-for-test.patch //应用patch 之后就是编译验证
5. 提交补丁
//获取维护者和邮件列表
./scripts/get_maintainer.pl 0001-MIPS-just-for-test.patch
Huacai Chen <chenhc@lemote.com> (maintainer:MIPS/LOONGSON64 ARCHITECTURE)
Jiaxun Yang <jiaxun.yang@flygoat.com> (maintainer:MIPS/LOONGSON64 ARCHITECTURE)
Thomas Bogendoerfer <tsbogend@alpha.franken.de> (supporter:MIPS)
Paul Cercueil"<paul@crapouillou.net> (supporter:MIPS)
Florian Fainelli"<f.fainelli@gmail.com> (supporter:MIPS)
linux-mips@vger.kernel.org (open list:MIPS/LOONGSON64 ARCHITECTURE)
linux-kernel@vger.kernel.org (open list)
//发送补丁邮件给自己,确认邮件是否有问题
git send-email *.patch --to "michael <michael5hzg@163.com>" --cc "michael <michael5hzg@gmail.com>"
//发送补丁邮件给维护者和邮件列表
git send-email *.patch --to "" --to ""Thomas Bogendoerfer"<tsbogend@alpha.franken.de>;" --to ""Florian Fainelli"<f.fainelli@gmail.com>;" --to "Huacai
Chen <chenhc@lemote.com>" --to "Jiaxun Yang <jiaxun.yang@flygoat.com>" --cc linux-mips@vger.kernel.org --cc linux-kernel@vger.kernel.org
6. 查看补丁
https://lore.kernel.org/linux-mips/
https://patchwork.kernel.org/project/linux-mips/list/
7. 配置邮箱
提交的代码过程中免不了要进行邮件沟通,这里以thuderbird 客户端为例说明。建议安装英文版的thuderbird,本人是在ubuntu 20.04(系统语言为英语)下安装的thuderbird客端。
配置主要是参考linux 官方邮箱配置文档。主要设置有如下:
1. 配置回复引用模式
打开 “edit‣preferences‣advanced‣config editor”,搜索到 mail.identity.default.reply_on_top 设置项并将其改为1即可
2.
打开 “edit‣preferences‣advanced‣config editor” 搜索到 mailnews.send_plaintext_flowed 设置为 false, 搜索到 mailnews.wraplength 将 72 设置为 0。
3. 设置字符编码模式及文件模式
View‣Message Body As‣Plain Text
View‣Character Encoding‣Unicode (UTF-8)
8. 生成带版本号的补丁
生成要发送到社区的内核补丁时如何指定发布的版本号(v2,v3...)
1. 生成一个补丁
git format-patch -v2
那么生成的patch文件就会有如下类似的信息:
Subject: [PATCH v2] your description about the patch
或者是使用git-publish(https://github.com/stefanha/git-publish) 这类的patch 管理工具
2. 那么若是同时生成两个补丁呢?
git format-patch --subject-prefix=v2, -1
生成的两个patch文件就会有如下类似信息:
Subject: [v2, 1/2] your description about the patch 1
Subject: [v2, 2/2] your description about the patch 2