Re: [PATCH v3 3/3] run-command: show prepared command

Junio C Hamano
2024-05-24T06:09:04Z

Junio C Hamano <gitster@pobox.com> writes:

> Subject: [PATCH] fixup! run-command: show prepared command
>
> Do not assume everybody sets SHELL_PATH to /bin/sh
> ---
> t/t0014-alias.sh | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/t/t0014-alias.sh b/t/t0014-alias.sh
> index 75c8763a6c..0d42d2b454 100755
> --- a/t/t0014-alias.sh
> +++ b/t/t0014-alias.sh
> @@ -48,7 +48,8 @@ test_expect_success 'tracing a shell alias with arguments shows full prepared co
> git config alias.echo "!echo \$*" &&
> env GIT_TRACE=1 git echo argument 2>output &&
> cp output /tmp/output &&
> - test_grep "^trace: prepare_cmd: /bin/sh -c '\''echo \$\* \"\$@\"" output
> + # ".*" can be "sh", or SHELL_PATH (not always "/bin/sh")
> + test_grep "^trace: prepare_cmd: .* -c '\''echo \$\* \"\$@\"" output
> '

So with this applied on top of the topic, 'seen' does pass with
SHELL_PATH set to say /bin/dash, but this still fails CI jobs on
Windows.

A sample run that failed (you'd probably need to be logged in as a
github user there):

https://github.com/git/git/actions/runs/9216303673/job/25360383492#step:5:237

With the lack of "trace: prepare_cmd:" in the "output" file, on the
platform, perhaps the code is failing to find an executable for
"echo" on the $PATH and taking the early return codepath that sets
errno to ENOENT and returns -1? Or it is that even prepare_cmd()
is not called? I do not do Windows, so I'll stop here.

Oh by the way, I just noticed that there is an apparent leftover
debugging statement that accesses outside the test playpen. When
you reroll the patch, please make sure that "cp output /tmp/output"
is removed.

Thanks.