Subject: Re: [PATCH] Do not use SHELL_PATH from build system in prepare_shell_cmd on Windows

From: Johannes Sixt <[email-masked]>
Date: Wed, 18 Apr 2012 07:39:43 +0200

Am 4/18/2012 0:14, schrieb Jeff King:
> On Tue, Apr 17, 2012 at 09:03:21AM +0200, Johannes Sixt wrote:
> 
>> diff --git a/run-command.c b/run-command.c
>> index 2af3e0f..e4edede 100644
>> --- a/run-command.c
>> +++ b/run-command.c
>> @@ -94,7 +94,11 @@ static const char **prepare_shell_cmd(const char **argv)
>>  		die("BUG: shell command is empty");
>>  
>>  	if (strcspn(argv[0], "|&;<>()$`\\\"' \t\n*?[#~=%") != strlen(argv[0])) {
>> +#ifndef WIN32
>>  		nargv[nargc++] = SHELL_PATH;
>> +#else
>> +		nargv[nargc++] = "sh";
>> +#endif
>>  		nargv[nargc++] = "-c";
>>  
>>  		if (argc < 2)
> 
> It sounds like the real problem is not the use of a configurable shell,
> but rather the use of an absolute path. Should you maybe try to pass the
> basename of SHELL_PATH? Or maybe that is not even worth worrying about,
> as somebody on Windows is not going to ever set SHELL_PATH, since it is
> not like they are working around a non-POSIX "sh" included with the
> operating system (which is why people on Solaris typically set
> SHELL_PATH).

I thought about offering a customization point, but decided that it is not
worth the hassle: Most people download an installer, then the installer
can set up the PATH so that "sh" is not broken or something entirely
unrelated. And those who build git themselves know sufficiently well what
they are doing.

-- Hannes