当前位置: 首页 > news >正文

提交linux kernel patch流程

commit缩进

git commit 要求自动换行(按照社区具体已要求,内核要求75字符)
git config --global core.editor "vim"

~/.vimrc 中写入
autocmd FileType gitcommit setlocal textwidth=75

本地提交commit

git commit -s 会自动打开编辑器
-s会自动在commit结尾加上Signed-off-by,注意要修改成真名 + 邮箱,而不是昵称 + 邮箱(看社区要求)

commit的第一行会作为title,后面是内容

bpf: it is titleThe tcp_bpf_recvmsg_parser() xxxxxxxSigned-off-by: Jiayuan Chen <mrpre@163.com>

注意如果commit message你是从外部拷贝进去的话,即使设置了自动换行也不会换行的;只有手输才会自动换行,要么在外面编辑好换号行后再拷贝进编辑器。

生成本地patch文件

将当前第一个commit生成patch,到tmp目录下
git format-patch HEAD~1 -o /tmp

~1 表示是根据最近1个commit生成patch。

如果如果生成多个patch,~2 ~3等…,同时会自动加上 x/y ,无需手动

[patch 1/2]
[patch 2/2]

其中,最老的一个patch作为1。

如果多个patch(即多个commit打成的patchsets),建议format-patch加上 --cover-letter 参数, 这会生成一个独立的、额外的、top的email,相当于菜单,里面可以简单列下原因等。
加上 --cover-letter ,[patch 0/2] 就是那个菜单,里面需要手动vim编辑,包括subject也需要编辑。
效果如下:

[patch 0/2] introduce xxx[patch 1/2] [patch 2/2]

注意了,这个[patch 0/2]里面的信息不会作为最终commit message,所以每个具体的commit还是需要认真填写。

规范性检查

每次修改完需要从头来过,检查脚本在linux源码目录
./scripts/checkpatch.pl /tmp/0001-bpf-fix-filed-access-without-lock.patch
有很多要求,包括一行多少个字符,各种格式等。。报错原因也基本会打印出来,如果还是看不懂就分析下checkpatch.pl 源码即可,不复杂。

发送给谁

./scripts/get_maintainer.pl /tmp/0001-bpf-fix-filed-access-without-lock.patch
其实这些都不准确,很多都没人理,具体看邮件列表当前谁在review,把这些人也加上去

配置邮箱

发送的时候需要配置stmp。请参考对应邮箱服务,一次配置,后续git send-email 的时候就不需要填了,以163为例
git config --global sendemail.smtpserver smtp.163.com
git config --global sendemail.smtpserverport 465
git config --global sendemail.smtpuser 邮箱账号
git config --global sendemail.smtppass 密码
git config --global sendemail.smtpencryption ssl

发送

发送patch,指定patch以及收件人,收件人由 get_maintainer.pl 列出,以及当前谁比较活跃

注意,通常先只发送给自己,即--to 自己邮箱,然后看看效果,没问题了再发给社区

发送给社区,例如这里的人就是我获取到的的reviewer)如果是多个patch,使用目录/youpatch/* 来代替 单个文件):
git send-email --to edumazet@google.com --to jakub@cloudflare.com --to davem@davemloft.net --to dsahern@kernel.org --to kuba@kernel.org --to pabeni@redhat.com --to netdev@vger.kernel.org --to bpf@vger.kernel.orgc --to linux-kernel@vger.kernel.org /tmp/你的patch文件

注意,执行完成会有交互,提示是否发送,可以仔细看下发给谁了,或者按e看看内容。

回复

一般会提出意见,你要按照意见改,可以重新revert掉本地commit,从头来过,然后生成patch
git format-patch -v2 HEAD~ -o /tmp ,-v2会让subject自动打上v2,例如[PATCH v2]
同时使用git commit --amend 编辑你的commit信息,在最后加入如下信息,这样,方便review(非强制,但是这样review比较快,特别是不同人review的时候)

---
v1 -> v2 : 干了什么v1 链接
---

git send-email --to 那个人 --cc 其他人 /tmp/v2patch
这样生成了独立的thread,个人喜欢独立的thread。特别是多个patch的时候,来回回复,根本看不清。

如果是单独patch,则可以简单回复并且相同的thread:
git send-email --no-thread --to 那个人 --in-reply-to $messageid --cc 其他人 /tmp/v2patch

其中message id你看是要回复谁,网易邮箱查看信头 就能看到,其他邮箱也类似,查看header就能看到message id。

如果当前如下

[a][b][c]

你回复a,则thread状态如下

[a][b][c][你的邮件]

你如果回复b则,则thread状态如下

[a][b][你的邮件][c]

9、单纯回复
像reviewer一样回复,通常是用来简单交流的,不需要patch。由于需要按照bottom-posting(和163 gmail等相反的格式= =),以及需要引用收到的内容,这里使用各种webmail肯定是不合适的(至少我没找到),git send-email 也麻烦。

这里建议使用mutt客户,纯命令行的,参考https://wonderful.blog.csdn.net/article/details/143483526
你按恢复的时候,本身就会自动把原始邮件前面加上<' ,你只需要在要回复的内容下面添加一行即可(PS如果看不懂我说的是什么,你可以看下mail list就知道我说的是啥了)。


http://www.mrgr.cn/news/67878.html

相关文章:

  • 轮播图【HTML+CSS+JavaScript】
  • [Code]U-Mamba
  • QT for android 问题总结(QT 5.15.2)
  • MSC“名实之辩”:精准鉴定只为精准治疗
  • ubuntu安装与配置Nginx(2)
  • 仿真APP助力汽车零部件厂商打造核心竞争力
  • 第08章 排序ORDER BY
  • 大模型微调技术 --> LoRA 系列之 AdaLoRA
  • ABAP开发-内存管理
  • Flutter环境配置
  • 论文阅读《Structure-from-Motion Revisited》
  • Unet++改进3:添加NAMAttention注意力机制
  • 故障排查 之 单点登录跳转失败(Ingress 相关)
  • Linux系列-进程的状态
  • 【网易云插件】听首歌放松放松
  • 在数据抓取的时候,短效IP比长效IP有哪些优势?
  • 药品进销存表格制作 佳易王药店药品入库出库台账库存管理系统操作教程
  • 18-分页与遍历 - From, Size, Search_after Scroll API
  • (vue3)在Pinia Store中正确使用Vue I18n
  • 记录mkdocs+yeti生成页面左侧导航(sidebar)添加滚动条(scroll bar)方法
  • LLM训练”中的“分布式训练并行技术;分布式训练并行技术
  • 整合本地市场机会 同城小程序打造社区商圈
  • ESP32-S3 IDF以太网接口移植
  • C++之priority_queue容器
  • Ethernet 系列(8)-- 基础学习::ARP
  • DeepSpeed分布式训练框架深度学习指南