git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] t5528: do not fail with FreeBSD shell

From
Jeff King <peff@peff.net>
Date
Mar 8, 2015, 17:56 UTC
Message-ID
<20150308175624.GA30399@peff.net>
In-Reply-To
<e3bfc53363b14826d828e1adffbbeea@74d39fa044aa309eaea14b9f57fe79c>
On Sun, Mar 08, 2015 at 08:37:50AM -0700, Kyle J. McKay wrote:
Show 9 quoted lines
> The FreeBSD shell converts this expression:
> 
>   git ${1:+-c push.default="$1"} push
> 
> to this when "$1" is not empty:
> 
>   git "-c push.default=$1" push
> 
> which causes git to fail.
Hmph, just when I thought I knew about all of the weird shell quirks. :)

I am not convinced this isn't a violation of POSIX (which specifies that field splitting is done on the results of parameter expansions outside of double-quotes). But whether it is or not, we have to live with it.

For my own curiosity, what does:
  foo='with space'
  printf "%s\n" ${foo:+first "$foo"}

print? That is, are the double-quotes even doing anything on such a shell? On bash and dash, it prints:

  first
  with space

which is what I would expect. So does "ash" (0.5.7, packaged for Debian), which is what I _thought_ FreeBSD's shell was based on. But clearly there is some divergence.

I guess they are getting eaten by your shell, otherwise we would pass them along to git in the test script, which would complain.

> ---
>  t/t5528-push-default.sh | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
Patch itself looks obviously correct.
-Peff
Previous: Kyle J. McKayNext: Kyle J. McKay
Message 2 of 4 in “t5528: do not fail with FreeBSD shell”
  1. t5528: do not fail with FreeBSD shellKyle J. McKay, Mar 8, 2015
  2. Jeff KingMar 8, 2015
  3. Kyle J. McKayMar 9, 2015
  4. Jeff KingMar 9, 2015

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.