当使用邮件补丁并包含一封求职信时,git-am命令会失败。

6
在运行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个补丁时跳过它?

1个回答

1
With Git 2.35(2022年第一季度),"git am"(man)学会了--empty=(stop|drop|keep)"--allow-empty选项,以调整对没有补丁的电子邮件的处理方式。

因此,请使用Git 2.35+再次尝试:

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

请参考9e7e41b7c096b8552038e(由徐沛文(Aleen)(aleen42)于2021年12月09日提交),以及在commit ead6767中由Junio C Hamano -- gitster --合并的内容。

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

签名:徐沛文(Aleen)

由于'git-format-patch'命令可以包含没有更改的提交的补丁,因此'git-am'命令也应支持一个名为'--empty'的选项,以指定如何处理这些空补丁。

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

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

--empty=(stop|drop|keep)

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

当此选项设置为'drop'时,跳过这样的电子邮件消息。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接