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

Re: [PATCH v2 3/4] rebase: fix garbled progress display with '-x'

From
SZEDER Gábor <szeder.dev@gmail.com>
Date
Jun 17, 2019, 19:13 UTC
Message-ID
<20190617191328.GL31952@szeder.dev>
In-Reply-To
<nycvar.QRO.7.76.6.1906141356140.44@tvgsbejvaqbjf.bet>
On Fri, Jun 14, 2019 at 08:42:29PM +0200, Johannes Schindelin wrote:
> The `SHELL` thing here is important, as t/t3404-rebase-interactive.sh sets
> this to the empty value explicitly:
> 
> https://github.com/git/git/blob/v2.22.0/t/t3404-rebase-interactive.sh#L63-L68
Hmm, hang on for a sec.  Why does it set SHELL to empty?

So t3404 sets SHELL to the empty value since cd035b1cef (rebase -i: add exec command to launch a shell command, 2010-08-10), and the in-test comment highlighted on the above link says:

  # "exec" commands are run 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. Unsetting SHELL avoids such non-portable behavior
  # in tests. It must be exported for it to take effect where needed.
  SHELL=

Furthermore, the corresponding documentation added in cd035b1cef says the following:

  The "exec" command launches the command in a shell (the one specified
  in `$SHELL`, or the default shell if `$SHELL` is not set)

IOW if SHELL is not set/empty, then it will run the default '/bin/sh', but who knows what it might be, there's no guarantee that it's a sane POSIX shell. That's why we have "Define SHELL_PATH to a POSIX shell if your /bin/sh is broken." very near to the top of our Makefile.

So while setting SHELL to the empty value might indeed avoid non-portable behavior when the user in general prefers a non-POSIX shell, it wouldn't help if '/bin/sh' is broken. For that it should be set to $SHELL_PATH (or perhaps $TEST_SHELL_PATH nowadays...).

Though cd035b1cef is now close to 9 years old, plenty of time for somebody to run into this issue in the wild and speak up...

Previous: SZEDER GáborNext: SZEDER Gábor
Message 17 of 41 in “rebase: fix garbled progress display with '-x'”
  1. rebase: fix garbled progress display with '-x'SZEDER Gábor, Apr 30, 2019
  2. Johannes SchindelinApr 30, 2019
  3. SZEDER GáborMay 1, 2019
  4. Johannes SchindelinMay 3, 2019
  5. SZEDER GáborJun 11, 2019
  6. 0/4 rebase/progress: add and use term_clear_line()SZEDER Gábor, Jun 11, 2019
  7. 2/4 pager: add a helper function to clear the last line in the terminalSZEDER Gábor, Jun 11, 2019
  8. 1/4 t3404-rebase-interactive: use the 'q_to_cr' helperSZEDER Gábor, Jun 11, 2019
  9. 3/4 rebase: fix garbled progress display with '-x'SZEDER Gábor, Jun 11, 2019
  10. Junio C HamanoJun 11, 2019
  11. SZEDER GáborJun 11, 2019
  12. Johannes SchindelinJun 12, 2019
  13. SZEDER GáborJun 12, 2019
  14. Johannes SchindelinJun 13, 2019
  15. Johannes SchindelinJun 14, 2019
  16. SZEDER GáborJun 17, 2019
  17. SZEDER GáborJun 17, 2019
  18. SZEDER GáborJun 17, 2019
  19. SZEDER GáborJun 24, 2019
  20. Phillip WoodJun 25, 2019
  21. SZEDER GáborJun 25, 2019
  22. Phillip WoodJun 25, 2019
  23. Phillip WoodJun 25, 2019
  24. Johannes SchindelinJun 25, 2019
  25. Phillip WoodJun 25, 2019
  26. Junio C HamanoJun 11, 2019
  27. SZEDER GáborJun 11, 2019
  28. Junio C HamanoJun 12, 2019
  29. 4/4 progress: use term_clear_line()SZEDER Gábor, Jun 11, 2019
  30. Johannes SchindelinJun 12, 2019
  31. 0/5 rebase/progress: add and use term_clear_line()SZEDER Gábor, Jun 24, 2019
  32. 2/5 t3404: make the 'rebase.missingCommitsCheck=ignore' test more focusedSZEDER Gábor, Jun 24, 2019
  33. Johannes SchindelinJun 25, 2019
  34. 1/5 t3404: modernize here doc styleSZEDER Gábor, Jun 24, 2019
  35. Johannes SchindelinJun 25, 2019
  36. 3/5 pager: add a helper function to clear the last line in the terminalSZEDER Gábor, Jun 24, 2019
  37. 4/5 rebase: fix garbled progress display with '-x'SZEDER Gábor, Jun 24, 2019
  38. 4/5 rebase: fix garbled progress display with '-x'SZEDER Gábor, Jun 27, 2019
  39. 5/5 progress: use term_clear_line()SZEDER Gábor, Jun 24, 2019
  40. Johannes SchindelinJun 25, 2019
  41. Junio C HamanoJun 25, 2019

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.