Re: [PATCH v11 2/2] am: support --empty=<option> to handle empty patches
From: Aleen 徐沛文 <hidden>
Date: 2021-11-29 09:21:35
Dears Hamano,
Elijah Newren has given two better suggestions:
1. Use 'ask' rather than 'die'
2. When erroring out 'Patch is empty', print out a tutorial information
to help users using 'git commit --allow-empty' to keep recording as
an empty commit.
Should we continue to implement these features in current PR?
Aleen
quoted
+--empty=(die|drop|keep):: + By default, or when the option is set to 'die', the command + errors out on an input e-mail message that lacks a patch. When + this option is set to 'drop', skip such an e-mail message instead. + When this option is set to 'keep', create an empty commit, + recording the contents of the e-mail message as its log.What does 'errors out' mean? Is the am operation aborted, and the user return to the pre-am state? Or is the am operation interrupted, with the user being asked to choose whether to keep or drop the patch? Or something else (my first thought was "Are you going to leave the index locked?")? This description is not that clear. To me, the wording suggests aborted (or worse), but what you actually implemented was an interrupt-and-ask. Can I suggest using 'ask' instead of 'die'? I think that will be clearer, and it matches the term used by git rebase --empty. Also, the only instructions given to the user when you interrupt include how to skip the patch, but I don't see anything for how to keep it. The instructions are: ''' 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". ''' I tried it manually, and it turns out "git am --continue" will just spit out basically the same message again: ''' Applying: empty commit No changes - did you forget to use 'git add'? If there is nothing left to stage, chances are that something else already introduced the same changes; you might want to skip this patch. 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". ''' And if I try to run `git commit --allow-empty` (which I happen to remember is the command suggested by `git rebase --empty=ask` when it stops), then I'm given an empty editor; it is not pre-populated with the appropriate commit message. Can the portion of the empty patch corresponding to the commit message be added to .git/COMMIT_EDITMSG to correct that? Also, can some extra words be printed before interrupting to explain what to do when you want to keep the empty commit? Something like: """ The current commit being applied is empty. If you wish to commit it anyway, use: git commit --allow-empty """