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

Re: syntax error in git-rebase while running t34* tests

From
Jeff King <peff@peff.net>
Date
May 10, 2016, 20:47 UTC
Message-ID
<20160510204758.GB19958@sigill.intra.peff.net>
In-Reply-To
<xmqq60ulpw1s.fsf@gitster.mtv.corp.google.com>
On Tue, May 10, 2016 at 12:11:59PM -0700, Junio C Hamano wrote:
Show 20 quoted lines
> Armin Kunaschik <megabreit@googlemail.com> writes:
> 
> > I fail to see why eval is really necessary here.
> 
> It is necessary to work correctly with any strategy option with $IFS
> in it, I would think.  The calling script "git-rebase" accumulates
> --strategy-option values after passing each of them through
> "rev-parse --sq-quote" for that reason.
> 
> which means that eval'ed string here:
> 
> > My quick and dirty hotfix is to place a
> > test -n "$strategy_opts" &&
> > in front of the eval.
> > The tests run fine after this change.
> >
> > What do you think?
> 
> I do not see why "test -n &&" is necessary here, and would be very
> hesitant to accept a change that nobody understands why it works.

I think it is clear why it works. If $strategy_opts is empty, then the code we generate looks like:

  for strategy_opt in
  do
          ...
  done

and some shells (apparently) are not happy with no content after the "in". If the variable is empty, there is no need to run the loop at all, so it is OK to skip it the eval entirely.

-Peff
Previous: Junio C HamanoNext: Junio C Hamano
Message 3 of 7 in “syntax error in git-rebase while running t34* tests”
  1. Armin KunaschikMay 10, 2016
  2. Junio C HamanoMay 10, 2016
  3. Jeff KingMay 10, 2016
  4. Junio C HamanoMay 10, 2016
  5. Jeff KingMay 10, 2016
  6. Johannes SchindelinMay 11, 2016
  7. Jeff KingMay 11, 2016

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.