Re: [PATCH] rebase -i: improve error message when picking merge
- From
Rubén Justo <rjusto@gmail.com>
- Date
- Apr 4, 2024, 19:44 UTC
- Message-ID
- <57462d2e-e255-4d35-b778-176f03675df0@gmail.com>
- In-Reply-To
- <pull.1672.git.1708945087691.gitgitgadget@gmail.com>
On Mon, Feb 26, 2024 at 10:58:07AM +0000, Phillip Wood via GitGitGadget wrote:
Show 32 quoted lines
> From: Phillip Wood <phillip.wood@dunelm.org.uk> > > The only todo commands that accept a merge commit are "merge" and > "reset". All the other commands like "pick" or "reword" fail when they > try to pick a a merge commit and print the message > > error: commit abc123 is a merge but no -m option was given. > > followed by a hint about the command being rescheduled. This message is > designed to help the user when they cherry-pick a merge and forget to > pass "-m". For users who are rebasing the message is confusing as there > is no way for rebase to cherry-pick the merge. > > Improve the user experience by detecting the error when the todo list is > parsed rather than waiting for the "pick" command to fail and print a > message recommending the "merge" command instead. We recommend "merge" > rather than "exec git cherry-pick -m ..." on the assumption that > cherry-picking merges is relatively rare and it is more likely that the > user chose "pick" by a mistake. > > It would be possible to support cherry-picking merges by allowing the > user to pass "-m" to "pick" commands but that adds complexity to do > something that can already be achieved with > > exec git cherry-pick -m1 abc123 > > The change is relatively straight forward but is complicated slightly as > we now need to tell the parser if we're rebasing or not. > > Reported-by: Stefan Haller <lists@haller-berlin.de> > Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk> > ---
Hi Phillip.
The change makes sense, but this is confusing to me:
With this ...
$ GIT_EDITOR='echo pick 17381ab62a >' ./git rebase -i HEAD error: 'pick' does not accept merge commits, please use 'merge -C' error: invalid line 1: pick 17381ab62a You can fix this with 'git rebase --edit-todo' and then run 'git rebase --continue'. Or you can abort the rebase with 'git rebase --abort'.
... I find these repeated messages confusing:
$ GIT_EDITOR=: ./git rebase --edit-todo error: 'pick' does not accept merge commits, please use 'merge -C' error: invalid line 1: pick 17381ab62a error: 'pick' does not accept merge commits, please use 'merge -C' error: invalid line 1: pick 17381ab62a You can fix this with 'git rebase --edit-todo' and then run 'git rebase --continue'. Or you can abort the rebase with 'git rebase --abort'.