Re: [PATCH] rebase -x: sanity check command
- From
Johannes Schindelin <johannes.schindelin@gmx.de>
- Date
- Jan 28, 2019, 21:56 UTC
- Message-ID
- <nycvar.QRO.7.76.6.1901282253200.41@tvgsbejvaqbjf.bet>
- In-Reply-To
- <xmqqd0ogbpzn.fsf@gitster-ct.c.googlers.com>
Hi Junio,
On Mon, 28 Jan 2019, Junio C Hamano wrote:
Show 22 quoted lines
> Phillip Wood <phillip.wood@talktalk.net> writes: > > > From: Phillip Wood <phillip.wood@dunelm.org.uk> > > > > If the user gives an empty argument to --exec then the rebase starts to > > run before erroring out with > > > > error: missing arguments for exec > > error: invalid line 2: exec > > 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'. > > Hmph. I do agree that the above makes an unfortunate end-user > experience, but I would sort-of imagine that it would even be nicer > for such an empty exec to behave as if it were "exec false" but with > less severe error message, i.e. a way for the user to say "I want to > break the sequence here and get an interactive session". We may not > even need to add the "break" insn if we go that way and there is one > less thing for users to learn. I dunno, but I tend to prefer giving > a useful and safe behaviour to interactive users other than erroring > out, when there _is_ such a safe behaviour that is obvious from the > situation, and I feel that an empty "exec" is such a case.
That would make things unnecessarily confusing. An empty command is not `false` with a gentler error message. An empty command is a missing command.
I am, however, concerned that special-casing an empty command will not make things better: if the user called `git rebase --exec=fasle`, they will *still* have to clean up their edit script.
Or just `git rebase --abort`, which I would do whether I had forgotten to specify a command or whether I had a typo in my command.
Show 9 quoted lines
> > Also check that the command does not contain any newlines as the > > todo-list format is unable to cope with multiline commands. Note that > > this changes the behavior, before this change one could do > > > > git rebase --exec='echo one > > exec echo two' > > It is very good to check the input, regardless of what an empty > "exec" should do.
Should we then also check for incorrect quoting, missing commands, other errors? I am not sure that this path leads to sanity.
Ciao, Dscho