git - 带有邮箱补丁的 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?
解决方案
使用 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
请参阅提交 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
' 时,创建一个空提交,将电子邮件的内容记录为其日志。
推荐阅读
- javascript - 将 PDF 链接下载为同一页面中的文件,而不是在浏览器中打开
- php - 如何正确使用 msqli bind_param?
- html - 在部门内滚动 UL 列表
- flutter - 颤振键盘
- bitbucket - 如何通过 bitbucket API 获取拉取请求批准计数
- c# - Xamarin Forms 导航缓慢
- javascript - 当来自 API 的数据时如何在 Reactjs 中使用 Datatable
- sql - 仅使用一个属性值过滤我们的结果
- javascript - 刽子手游戏。我把逻辑搞砸了,但我似乎无法让它工作......关于我错过了什么或做错了什么的任何指针?
- c# - IdentityServer4 使用 ApiKey 或 Basic 直接对 API 进行身份验证