Gan*_*hat 3 git smtp sendmail smtpclient git-send-email
我正在尝试发送 git 补丁以供上游社区审核;但接收方没有收到消息;
我尝试将“ --to”更改为我的私人电子邮件 ID 之一,但即使如此,我的私人邮箱也没有收到此信息;
命令:
git send-email --no-chain-reply-to --from "Ganapathi Bhat <xxx@gmail.com>" --to linux-wireless@vger.kernel.org my_patch.patch
Run Code Online (Sandbox Code Playgroud)
输出:
Unable to initialize SMTP properly. Check config and use --smtp-debug. VALUES: server=smtp.gmail.com encryption=tls hello=yyy.yyy.com port=587 at /usr/lib/git-core/git-send-email line 1506
Run Code Online (Sandbox Code Playgroud)
命令:
git config -l
输出:
user.email=xxx@gmail.com
user.name=Ganapathi Bhat
sendemail.smtpencryption=tls
sendemail.smtpserver=smtp.gmail.com
sendemail.smtpuser=xxx@gmail.com
sendemail.smtpserverport=587
Run Code Online (Sandbox Code Playgroud)
该补丁应交付给社区进行审核,并且应出现在以下列表中: https ://patchwork.kernel.org/project/linux-wireless/list/
考虑git send-email手册页,测试添加等号 (\' =\') 是否会改变任何内容:
git send-email --no-chain-reply-to --from="Ganapathi Bhat" --to=linux-wireless@vger.kernel.org my_patch.patch\n ^^^ ^^^\nRun Code Online (Sandbox Code Playgroud)\n下一步是检查您的sendemail 配置:git config -l
\n请参阅Git 提示。
\n例如,使用 GMail:
git send-email现在支持 TSL/SSL,因此使用 gmail 就像设置以下配置变量一样简单:
[sendemail]\n smtpencryption = tls\n smtpserver = smtp.gmail.com\n smtpuser = yourname@gmail.com\n smtpserverport = 587\nRun Code Online (Sandbox Code Playgroud)\nOP Ganapathi Bhat在评论中确认了配置问题:
\n\n\n\n我使用了错误的“smtpserver”;
\n
\n我联系了 IT 人员,找到了要使用的正确的“smtpserver”,这解决了问题。
说到sendmail配置,请务必使用sendemail!
sendmail.*当定义“”配置变量时,Git 2.29(2020 年第 4 季度)将停止,这可能是定义“ sendemail.*”变量的错误尝试。
请参阅Drew DeVault ( )提交的 dd84e52(2020 年 7 月 23 日)。\n (由Junio C Hamano 合并 -- --在提交 a00bda2中,2020 年 8 月 17 日)ddevaultgitster
\n\n\n
git-send-email: 如果sendmail.*设置了配置则死亡签署人:Drew DeVault
\n
\n\n我见过几个人在第一次尝试时就错误配置(man) ,因为他们设置了配置选项 - 而不是。\n这个补丁检测到这个错误并通过友好的警告来解决。
\ngit send-emailsendmail.*sendemail.*
git config现在包含在其手册页中:
\n\n\n
sendemail.forbidSendmailVariables为了避免常见的错误配置错误,
\ngit send-email如果存在“ ”的任何配置选项,\n将中止并发出警告sendmail。设置此变量以绕过检查。
在 Git 2.33(2021 年第 3 季度)中,“ git send-email” (man)得到了一些优化,其中一些与上面提到的提交相关。
请参阅提交 17530b2、提交 c95e3a3、提交 5a544a4、提交 f4dc943、提交 447ed29、提交 4adbf38、提交 fef381e、提交 9264d29 、提交 2b110e9 、提交119974e、提交 671818a、提交 879be43,由\xc3\x86var Arnfj提交 ecc4ee9(2021 年 5 月 28 日)\xc3\xb6r\xc3\xb0 比贾梅森 ( )。\n (由Junio C Hamano 合并 -- --在提交 8de2e2e中,2021 年 7 月 22 日)avargitster
\n\n\n
send-email:延迟加载配置以获得大幅加速签署人:\xc3\x86var Arnfj\xc3\xb6r\xc3\xb0 Bjarmason
\n
\n\n通过首先列出存在的配置键,然后才对它们调用例如“ ” (man) ,可以减少完成最琐碎的任务(例如提供“-h”输出)所需的时间( man)如果他们这样做了。
\ngit-send-emailgit config --bool经过多次运行,这将
\n-h我的时间从约 250 毫秒缩短到约 150 毫秒,t9001-send-email.sh 的运行时间从约 25 秒缩短到约 20 秒。这引入了一个竞争条件,如果在我们发现列表和调用之间插入一个配置密钥
\nread_config(),我们将做“错误”的事情,即
\n我们不会知道竞相添加的密钥。
\n理论上这是行为的改变,实际上并不重要。此处更改的函数
\nconfig_regexp()已添加到dd84e52中(“git-send-email:die if sendmail.* config is set”,2020-07-23,Git v2.29.0-rc0 -合并在批次 #8中列出)供 git-send 使用电子邮件。
\n因此,在 git config 找不到任何值的情况下,我们可以更改其奇数返回值。
\n*.pm如果在标量上下文中调用它,代码中的差异将很重要,但现在不再如此。
注意:上述 Git 2.33 功能已损坏gitk,已在 Git 2.34(2021 年第四季度)中修复:
请参阅\xc3\x86var Arnfj\xc3\xb6r\xc3\xb0 Bjarmason ( )提交的 b996f84(2021 年 9 月 6 日)。\n (由Junio C Hamano 合并 -- --在提交 10de757中,2021 年 9 月 15 日)avargitster
\n\n\n
send-email:修复 v2.33.0 中的“第一个配置键获胜”回归报告人:Eli Schwartz
\n
\n测试人:Eli Schwartz
\n签署人:\xc3\x86var Arnfj\xc3\xb6r\xc3\xb0 Bjarmason
\n\n修复我的c95e3a3中的回归(“
\nsend-email:将琐碎的配置处理移至 Perl”,2021-05-28,Git v2.33.0-rc0 -批量 #6中列出的合并),其中我们选择第一个配置键多个定义的,而不是使用“ ” (man) ”的正常“最后一个键获胜”语义。git config --get这打破了例如 a与 ~/.gitconfig
\n.git/config不同的情况sendemail.smtpServer。
\n我们会选择~/.gitconfigover.git/config,而不是首选存储库本地版本。
\n同样适用于/etc/gitconfig等。即\n在 v2.33.0 中,在 say和 in-repo
\n
中设置其中任何一个,都会优先选择其中一个而不是 --local。~/.gitconfig.git/config--global