当包含求职信时,带有邮箱补丁的 git-am 失败

Lar*_*nbe 6 git mailing-list mbox mutt git-am

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

\n\n
128 git \xe2\x80\xa6 am --3way ~/patches/sample.mbox\nPatch is empty.\nWhen you have resolved this problem, run "git am --continue".\nIf you prefer to skip this patch, run "git am --skip" instead.\nTo restore the original branch and stop patching, run "git am --abort".\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n

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

\n

Von*_*onC 1

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

\n

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

\n
git \xe2\x80\xa6 am --empty=keep --allow-empty --3way ~/patches/sample.mbox\n
Run Code Online (Sandbox Code Playgroud)\n

请参阅提交 9e7e41b提交 7c096b8提交 552038e (2021 年 12 月 9 日),作者:\xe5\xbe\x90\xe6\xb2\x9b\xe6\x96\x87 (Aleen) ( aleen42)
\n (由Junio C Hamano 合并 -- gitster--提交 ead6767中,2022 年 1 月 5 日)

\n
\n

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

\n

签署人:\xe5\xbe\x90\xe6\xb2\x9b\xe6\x96\x87 (Aleen)

\n
\n
\n

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

\n

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

\n
\n

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

\n
\n

--empty=(stop|drop|keep)

\n

默认情况下,或者当该选项设置为“ stop\”时,该命令\n在缺少补丁的输入电子邮件消息上出错\n并停止到当前 am 会话的中间。

\n

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

\n

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

\n
\n