Web lists-archives.com

Re: [PATCH] rebase -x: sanity check command




Hi Phillip,

On Tue, 29 Jan 2019, Phillip Wood wrote:

> On 28/01/2019 21:56, Johannes Schindelin wrote:
> > 
> > On Mon, 28 Jan 2019, Junio C Hamano wrote:
> > 
> >> Phillip Wood <phillip.wood@xxxxxxxxxxxx> writes:
> >>
> >>> From: Phillip Wood <phillip.wood@xxxxxxxxxxxxx>
> >>>
> >>> 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 agree that having a special meaning to the empty command would be
> confusing. Also giving it on the command line only helps if you want to
> stop after each pick and my impression is that people want to break
> after specific commits to amend a fixup or something like that.
> 
> > 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.
> 
> The empty commands create an invalid todo list which git cannot parse,
> this patch is not a step down the path of checking that the command
> exists or is valid shell - I don't think that would be possible in the
> general case.

Well, at least the error message is helpful: it suggests --edit-todo.

But as I said in another reply, I understand now that your patch validates
the argument as necessary to produce a valid todo list.

Thanks,
Dscho

> 
> Best Wishes
> 
> Phillip
> 
> > 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.
> > 
> >>> 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
> > 
> 
>