首页 > 解决方案 > 带有邮箱补丁的 git-am 在包含求职信时失败

问题描述

当运行 git-am 应用我从邮件列表保存到 mbox 文件中的补丁系列时,如果 mbox 还包含求职信(也称为 PATCH [0/N]),它会抱怨如下:

128 git … am --3way ~/patches/sample.mbox
Patch is empty.
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".

求职信确实是一个空补丁,因为其中没有补丁分隔符,但我认为git am会足够聪明地注意到它并完全跳过它。这不是一个大麻烦,因为我可以跳过从 mutt 将此补丁添加到 mbox 中而不会遇到麻烦,但有时一个补丁系列到达邮件列表时有些混乱,我不能只是将整个线程复制到同一个 mbox 中。或者,我可以手动跳过补丁,它会顺利应用。

当它确实是求职信时,有什么方法可以指示 git am 跳过补丁号 0?

标签: gitmuttmailing-listmboxgit-am

解决方案


使用 Git 2.35(2022 年第一季度),“ git amman学习--empty=(stop|drop|keep)"--allow-empty选择调整对一封没有补丁的电子邮件所做的处理。

所以再试一次(Git 2.35+):

git … am --empty=keep --allow-empty --3way ~/patches/sample.mbox

请参阅提交 9e7e41b提交 7c096b8提交 552038e(2021 年 12 月 9 日),作者:徐沛文 (Aleen) ( aleen42)
(由Junio C Hamano 合并gitster——提交 ead6767中,2022 年 1 月 5 日)

am:支持--empty=<option>处理空补丁

签字人:徐沛文(Aleen)

由于命令“ git-format-patch”可以包含不发出更改的提交补丁,因此“ git-am”命令还应该支持一个名为“ --empty”的选项,以指定如何处理这些空补丁。

在本次提交中,我们实现了三个有效选项(' stop'、' drop' 和 ' keep')。

git am现在在其手册页中包含:

--empty=(stop|drop|keep)

默认情况下,或者将选项设置为“ stop”时,命令在输入电子邮件上错误缺少补丁并停止进入当前AM会话的中间。

当此选项设置为“ drop”时,请改为跳过此类电子邮件。

当此选项设置为 ' keep' 时,创建一个空提交,将电子邮件的内容记录为其日志。


推荐阅读