how to send a patch to upstream ?

| 标签 tips 

工欲善其事,必先利其器,先把 git 配置一下,首先设置一下全局的 git 变量。

git config --global user.name "username"
git config --global user.email "username@domain.com"

可以在~/.gitconfig看到配置文件,其中部分是个人配置操作习惯。

[core]

[alias]
	st = status
	co = checkout
	lg1 = log --graph --all --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(bold white)— %an%C(reset)%C(bold yellow)%d%C(reset)' --abbrev-commit --date=relative
	lg2 = log --graph --all --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset)%C(bold yellow)%d%C(reset)%n''          %C(white)%s%C(reset) %C(bold white)— %an%C(reset)' --abbrev-commit
	lg = log
	ci = commit
	br = branch
[push]
	default = simple
[format]
	signoff = true
[sendemail]
	confirm = auto
[user]
	name = username.name
	email = username@domain.com

使用git发送邮件需要一个邮件发送的工具,选择msmtp,因为简单好用,容易配置。

# cat ~/.msmtprc
logfile ~/.msmtp.log
auth login
from sn0rt@abc.shop.edu.cn
host ....
user guohao.wang
password this.is.a.secret

编写你对内核的修改,然后commit到本地,再使用git format将最近的一个commit格式为一个patch文件,可以看到一个.patch结尾的文件。

# git format-patch -1
# ./scripts/checkpatch.pl 0001-try-fix-a-overflow-of-nr_running-in-debug-file.patch
total: 0 errors, 0 warnings, 16 lines checked
0001-try-fix-a-overflow-of-nr_running-in-debug-file.patch has no obvious style problems and is ready for submission.

使用 kernel repo 里面的脚本来获取这个 patch 对应的 maintainer 的信息。

# ./scripts/get_maintainer.pl 0001-try-fix-a-overflow-of-nr_running-in-debug-file.patch
Ingo Molnar <mingo@redhat.com> (maintainer:SCHEDULER)
Peter Zijlstra <peterz@infradead.org> (maintainer:SCHEDULER)
linux-kernel@vger.kernel.org (open list)

一般工作流程是组内 review,完成过后,把邮件发送的给关心的人,不要忘记抄送,如果一切正常,可以看到Result: OK

git send-email --smtp-server /usr/local/bin/msmtp --from Sn0rt@abc.shop.edu.cn --to linux-kernel@vger.kernel.org --cc mingo@redhat.com --cc peterz@infradead.org 0001-try-fix-a-overflow-of-nr_running-in-debug-file.patch
...
Result: OK

PREV     NEXT