本篇文章首发于 Nano Code 维基百科

可以选择使用 git send-email 发送邮件补丁到社区,下面给出具体步骤。

安装 Git Email

  1. ubuntu 默认不会安装完全版的 git ,因此需要我们在安装 git 以后( ulan 默认安装了 git ),再安装 git-email :
1sudo apt update
2sudo apt install git-email

如果安装失败,比如遇到下面的问题:

可以手动添加 Git 官方的 PPA,再次安装:

1sudo add-apt-repository ppa:git-core/ppa
2sudo apt update
3sudo apt install git-email

配置 Git Email

  1. 首先我们需要准备一个邮箱,笔者使用的是 yeah.net 邮箱,另外 qq /foxmail 邮箱、网易邮箱、腾讯企业邮箱等等也是可以的。

PS: 如果是国内环境,不推荐使用 google 邮箱,需要翻墙。

  1. 需要开启邮箱的 smtp 服务,这个可以 google 找一下教程。注意事项如下:

    • 有一些邮箱会为第三方客户端设置独立的密码,这个需要先 copy 下来,后面需要用;
    • 需要关注邮箱支持的 smtp 加密协议是 stl 还是 ssl,或者都支持,这个后续配置的时候要用到。
  2. 配置 git email 绑定自己的邮箱,这里推荐使用命令行,而不是直接修改 .gitconfig,避免配置出错 :

1git config --global sendemail.smtpEncryption <ssl or stl>
2git config --global sendemail.smtpServer <your smtp address>
3git config --global sendemail.smtpServerPort 587
4git config --global sendemail.smtpUser <your email>
5git config --global sendemail.smtpPass = <your pass or smtp pass>

上述命令中的 <> 内部的部分,需要你按照自己的实际邮箱信息来填写。

配置完毕以后,可以 cat ~/.gitconfig 检查一下:

1[sendemail]
2        smtpEncryption = <ssl or stl>
3        smtpServer = <your smtp address>
4        smtpServerPort = 587
5        smtpUser = <your email>
6        smtpPass = *****

编辑补丁与发送

  1. 常用的补丁生成命令:
1git format-patch HEAD~<number> --subject-prefix="your prefix" --thread --cover-letter -s
  • --subject-prefix= 可以为补丁插入统一的 prefix,一般写 PATCH or RFC 或者组合;
  • --cover-letter 生成一个序号为 0 的抬头文件,可以编辑它,增加一些补丁说明;
  • -s 为补丁插入邮箱签名
  1. 发送邮件到邮件列表

以 qemu 为例,可以通过 ./script/get_maintainer.pl <patch-file> 来获取发送对象和抄送对象,具体发送邮件补丁的命令如下:

1git send-email \
2--to=<email> \
3--cc=<email> \
4<your-patch>

邮件发送成功以后,终端会输出:

Result: 250

PS: 可以先发送给自己的邮箱,检查能否正常发送。有些开源社区邮件列表,第一次向其发邮件,社区需要审核,如果没有在邮件列表中看到自己的邮件,请耐心等待一下。

  1. 回复邮件

可以参考这篇文章:正确使用邮件列表参与开源社区的协作