Git邮件向Linux社区提交内核补丁教程

你好!这里是风筝的博客,

欢迎和我一起交流。


提交代码要下载对应的模块代码分支,例如我是搞音频的,我要提交一个音频补丁,需要修改的代码文件在sound/soc/目录下,
在MAINTAINERS文件里可以查找到仓库链接:

SOUND - SOC LAYER / DYNAMIC AUDIO POWER MANAGEMENT (ASoC)
M:	Liam Girdwood <lgirdwood@gmail.com>
M:	Mark Brown <broonie@kernel.org>
L:	alsa-devel@alsa-project.org (moderated for non-subscribers)
S:	Supported
W:	http://alsa-project.org/main/index.php/ASoC
T:	git git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git
F:	Documentation/devicetree/bindings/sound/
F:	Documentation/sound/soc/
F:	include/dt-bindings/sound/
F:	include/sound/soc*
F:	sound/soc/

这里可以看到,仓库链接:git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git
git clone git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git
下载即可。

note:国内的话下载代码速度有点慢,好在kernel org给China(北京)做了mirror:https://cdn.kernel.org/beijing-git-mirror.html
点进去就可以针对各个子系统下载代码了(https://kernel.source.codeaurora.cn/)

下载好仓库之后,修改下git配置:

git config user.name "your name"
git config user.email "[email protected]"
git config sendemail.smtpencryption tls
git config sendemail.smtpserver smtp.gmail.com
git config sendemail.smtpuser fengzheng923@gmail.com 
git config sendemail.smtpserverport 587

smtpencryption可以配置tls,也可以配置ssl,都可以。
tls对应的smtpserverport写587,ssl对应的smtpserverport写465

这些命令具体就会修改到.git/config文件了~

[user]
        name = your name
        email = fengzheng923@gmail.com
[sendemail]
        from = fengzheng923@gmail.com
        smtpserver = smtp.gmail.com
        smtpserverport = 587
        smtpuser = fengzheng923@gmail.com
        smtpencryption = tls

这样就算配置好了!!

修改好代码,先本地提交代码,使用 git commit --amend --reset-author 命令可以重置作者。

生成补丁:git format-patch --subject-prefix=PATCH HEAD -1
ps:如果是一些列补丁,例如3个补丁,则HEAD -3,如果是v2版本,则 --subject-prefix=PATCH\ v2

检查补丁代码风格:./scripts/checkpatch.pl 00*.patch

确认补丁收件人:./scripts/get_maintainer.pl 00*.patch
此时会得到收件人列表,你要把补丁发送给这些人:

Liam Girdwood <lgirdwood@gmail.com> (supporter:SOUND - SOC LAYER / DYNAMIC AUDIO POWER MANAGEM...)
Mark Brown <broonie@kernel.org> (supporter:SOUND - SOC LAYER / DYNAMIC AUDIO POWER MANAGEM...,commit_signer:2/3=67%)
Jaroslav Kysela <perex@perex.cz> (maintainer:SOUND)
Takashi Iwai <tiwai@suse.com> (maintainer:SOUND)
Philipp Zabel <p.zabel@pengutronix.de> (maintainer:RESET CONTROLLER FRAMEWORK)
Samuel Holland <samuel@sholland.org> (commit_signer:2/3=67%,authored:1/3=33%,added_lines:1/10=10%)
Krzysztof Kozlowski <krzk@kernel.org> (commit_signer:1/3=33%,authored:1/3=33%,added_lines:1/10=10%,removed_lines:1/1=100%)
linux-kernel@vger.kernel.org (open list)
alsa-devel@alsa-project.org (moderated list:SOUND - SOC LAYER / DYNAMIC AUDIO POWER MANAGEM...)
linux-arm-kernel@lists.infradead.org (moderated list:ARM/Allwinner sunXi SoC support)

大概就是上面这样子,发送给Liam Girdwood、Mark Brown、Jaroslav Kysela等作者,抄送linux-kernel、alsa-devel和linux-arm-kernel。

最后就是发送邮件了:

git send-email 001-PATCH-XXX-commit-xxx.patch --to=lgirdwood@gmail.com,broonie@kernel.org,perex@perex.cz,tiwai@suse.com --cc=linux-kernel@vger.kernel.org,alsa-devel@alsa-project.org,linux-arm-kernel@lists.infradead.org

这个时候就会要求你填写Gmail账号和密码了,填写正确之后就会通过你的邮箱把补丁发送出去了。

如果在git使用Gmail发送邮件时,发现提示应用安全性较低,阻止访问。
解决如下:

  • 网页登录Gmail,点击【设置】–>【查看所有设置】
    set
  • 点击【账号和导入】–>【其他Google账号设置】
    account
  • 点击【安全性】–>关闭【两步验证】
    secure
  • 开启【安全性较低的应用访问权限】
    Authority
    如果不开启的话,可能会出现如下情况:
Send this email? ([y]es|[n]o|[e]dit|[q]uit|[a]ll): y
libpng warning: iCCP: cHRM chunk does not match sRGB
5.7.8 Username and Password not accepted. Learn more at
5.7.8  https://support.google.com/mail/?p=BadCredentials i125sm3241139pfc.7 - gsmtp

Git email里我们使用的是SMTP,如果是IMAP,可以选择开启IMAP:

  • 点击【转发和POP/IMAP】–>【启用IMAP】
    imap

在下方的【配置说明】里看查看信息:
server为:smtp.gmail.com
SSL端口:465
TLS端口:587
最后点击保存即可。

更具体提交patch情景参考:https://static.lwn.net/kerneldoc/translations/zh_CN/process/submitting-patches.html


后续:
我在别的电脑上提交patch的时候发现,邮件发不出去,提示:
Unable to initialize SMTP properly. Check config and use --smtp-debug.
加了 --smtp-debug 参数,也没发现有额外的打印,我就瞎鼓捣了下,log有时又变成了:

5.7.14 <https://accounts.google.com/signin/continue?sarp=1&scc=1&plt=AKgnsbv
5.7.14 L3-sIhECcOFvn6mktxQU–fM0hjSNKIUM0wttBnYeBlW8F6UvgMYo0ae7GpZWodyU5Uq0
5.7.14 uZynrneVhIErn4mQadZHUQ4SX8RqF1q_-awPynnTFmeyDJUmQcyBaYEaHzqhoepX>
5.7.14 Please log in via your web browser and then try again.
5.7.14 Learn more at
5.7.14 https://support.google.com/mail/answer/78754 d13sm4229058pjr.49 - gsmtp

在网上搜了一大堆,说实话,一点有用的都没有,使用了proxychains4也不行。。。
知乎上有两篇文章我也看了,对我没啥用:
向linux内核社区提交patch
轻松搞定 Unable to initialize SMTP properly

唉,说实话,有时不得不感概,国内的科技这块还是没有外国佬牛逼,国内的回答基本都是相同的,抄来抄去,不能解决问题啊~ 还是的去Google上翻外国佬的回答才有解决方案。。。。。。

方法一:
我看有人说,是因为smtp的465和587端口被封了,才导致发不出去。
访问这个网站可以测试端口:
http://portquiz.net:2525/
这是访问2525端口,可以访问~
修改成 http://portquiz.net:465/ 或者 http://portquiz.net:587/
就发现访问不了了。。。
可是我已经把防火墙给关了,也尝试修改了些出入站的规则,发现没啥用。

方法二:
发现有个日本网友也碰到了这个问题,里面给出了解决方案:
允许访问您的 Google 帐号
出于安全方面的考虑,当您从新设备登录或使用新应用时,Google 可能会要求您完成此附加步骤。

访问:https://accounts.google.com/DisplayUnlockCaptcha
点击继续就行了(隔段时间发邮件的时候会卡住,就要点击继续一次)
Google

参考:突然メールが送受信できなくなりました。http://support.google.com/mail/bin/answer.py?answer=78754 (Failure)にログインしてください、と出ます。

邮件列表可以查看这里两个:
https://patchwork.kernel.org/
http://vger.kernel.org/vger-lists.html
就可以在邮件列表里看到你的邮件了~


安全性较低的应用和您的 Google 帐号

为帮助确保您的帐号安全,从 2022 年 5 月 30 日起,Google 不再支持那些会要求您仅使用用户名和密码登录 Google 帐号的第三方应用或设备。

Google现在已经不支持安全性较低的应用访问Google账号了,所以不能直接用git send mail发邮件了。
想要用git发邮件,需要开启两步验证,然后开启专用密码,用专业密码登录,这样用git也能发出邮件了。

安全性较低的应用的访问权限

某些应用和设备采用的登录技术不够安全,这会导致您的帐号容易遭到攻击。建议您停用这些应用的访问权限。当然您也可以选择开启访问权限,但请了解相关风险。在未使用相关应用的情况下,Google 会自动关闭此设置。 了解详情

已启用两步验证的帐号无法使用此设置。此类帐号需要使用应用专用密码才能访问不够安全的应用。 了解详情

猜你喜欢

转载自blog.csdn.net/Guet_Kite/article/details/117997036