Re: [PATCH 1/2 (fix broken test)] rebase -i: add exec command to launch a shell command
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Aug 11, 2010, 18:31 UTC
- Message-ID
- <7v62zhyp9e.fsf@alter.siamese.dyndns.org>
- In-Reply-To
- <1281453472-29835-1-git-send-email-Matthieu.Moy@imag.fr>
Matthieu Moy <Matthieu.Moy@imag.fr> writes:
Show 15 quoted lines
> The typical usage pattern would be to run a test (or simply a compilation > command) at given points in history. > > The shell command is ran (from the worktree root), and the rebase is > stopped when the command fails, to give the user an opportunity to fix > the problem before continuing with "git rebase --continue". > > This needs a little rework of skip_unnecessary_picks, which wasn't robust > enough to deal with lines like > > exec >"file name with many spaces" > > in the todolist. The new version extracts command, sha1 and rest from > each line, but outputs the line itself verbatim to avoid changing the > whitespace layout.
Thanks.
Show 13 quoted lines
> diff --git a/t/t3404-rebase-interactive.sh b/t/t3404-rebase-interactive.sh > index 9f03ce6..93b181e 100755 > --- a/t/t3404-rebase-interactive.sh > +++ b/t/t3404-rebase-interactive.sh > @@ -64,6 +64,67 @@ test_expect_success 'setup' ' > done > ' > > +# "exec" commands are ran with the user shell by default, but this may > +# be non-POSIX. For example, if SHELL=zsh then ">file" doesn't work > +# to create a file. Unseting SHELL avoids such non-portable behavior > +# in tests. > +SHELL=
Tricky but true.
Do we have other callouts that we use $SHELL from the environment? execv_shell_cmd() just runs "sh -c" from $PATH so diff (when running external diff) nor ll-merge (when running external merge driver) that call it via run_command_v_opt(RUN_USING_SHELL) are immune to this issue.