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

Re: [PATCH 1/3] var: add support for listing the shell

From
Eric Sunshine <sunshine@sunshineco.com>
Date
Jun 22, 2023, 20:42 UTC
Message-ID
<CAPig+cSTR6oHeYjcHZ7m2CKYcFo2eistxz_X-7J2rhd7h+uf3g@mail.gmail.com>
In-Reply-To
<20230622195059.320593-2-sandals@crustytoothpaste.net>

On Thu, Jun 22, 2023 at 4:03 PM brian m. carlson <sandals@crustytoothpaste.net> wrote:

Show 27 quoted lines
> On most Unix systems, finding a suitable shell is easy: one simply uses
> "sh" with an appropriate PATH value.  However, in many Windows
> environments, the shell is shipped alongside Git, and it may or may not
> be in PATH, even if Git is.
>
> In such an environment, it can be very helpful to query Git for the
> shell it's using, since other tools may want to use the same shell as
> well.  To help them out, let's add a variable, GIT_SHELL_PATH, that
> points to the location of the shell.
>
> On Unix, we know our shell must be executable to be functional, so
> assume that the distributor has correctly configured their environment,
> and use that as a basic test.  On Git for Windows, we know that our
> shell will be one of a few fixed values, all of which end in "sh" (such
> as "bash").  This seems like it might be a nice test on Unix as well,
> since it is customary for all shells to end in "sh", but there probably
> exist such systems that don't have such a configuration, so be careful
> here not to break them.
>
> Signed-off-by: brian m. carlson <bk2204@github.com>
> ---
> diff --git a/t/t0007-git-var.sh b/t/t0007-git-var.sh
> @@ -147,6 +147,18 @@ test_expect_success 'get GIT_SEQUENCE_EDITOR with configuration and environment
> +test_expect_success POSIXPERM 'GIT_SHELL_PATH points to a valid executable' '
> +       git var GIT_SHELL_PATH >shell &&
> +       test -x "$(cat shell)"
> +'
This can be implemented more simply without a temporary file:
    shpath=$(git var GIT_SHELL_PATH) &&
    test -x "$shpath"

This is safe since the exit code of the Git command is preserved across the `shpath=...` assignment.

Show 6 quoted lines
> +# We know in this environment that our shell will be one of a few fixed values
> +# that all end in "sh".
> +test_expect_success MINGW 'GIT_SHELL_PATH points to a suitable shell' '
> +       git var GIT_SHELL_PATH >shell &&
> +       grep "sh\$" shell
> +'

Similarly, there is no need for a temporary file or an extra process. This can all be done entirely in the shell itself:

    shpath=$(git var GIT_SHELL_PATH) &&
    case "$shpath" in
    *sh) ;;
    *) return 1
    esac
Previous: brian m. carlsonNext: Junio C Hamano
Message 3 of 42 in “Additional variables for git var”
  1. 0/3 Additional variables for git varbrian m. carlson, Jun 22, 2023
  2. 1/3 var: add support for listing the shellbrian m. carlson, Jun 22, 2023
  3. Eric SunshineJun 22, 2023
  4. Junio C HamanoJun 22, 2023
  5. Eric SunshineJun 22, 2023
  6. brian m. carlsonJun 22, 2023
  7. Junio C HamanoJun 22, 2023
  8. brian m. carlsonJun 22, 2023
  9. 3/3 var: add config file locationsbrian m. carlson, Jun 22, 2023
  10. Eric SunshineJun 22, 2023
  11. 2/3 var: add attributes files locationsbrian m. carlson, Jun 22, 2023
  12. Derrick StoleeJun 22, 2023
  13. brian m. carlsonJun 22, 2023
  14. Junio C HamanoJun 22, 2023
  15. Junio C HamanoJun 22, 2023
  16. Eric SunshineJun 22, 2023
  17. brian m. carlsonJun 22, 2023
  18. Eric SunshineJun 22, 2023
  19. 0/7 Additional variables for git varbrian m. carlson, Jun 26, 2023
  20. 1/7 t: add a function to check executable bitbrian m. carlson, Jun 26, 2023
  21. 3/7 var: format variable structure with C99 initializersbrian m. carlson, Jun 26, 2023
  22. 4/7 var: adjust memory allocation for stringsbrian m. carlson, Jun 26, 2023
  23. Junio C HamanoJun 26, 2023
  24. 2/7 var: add support for listing the shellbrian m. carlson, Jun 26, 2023
  25. 5/7 attr: expose and rename accessor functionsbrian m. carlson, Jun 26, 2023
  26. Junio C HamanoJun 26, 2023
  27. 6/7 var: add attributes files locationsbrian m. carlson, Jun 26, 2023
  28. Jeff KingJun 27, 2023
  29. brian m. carlsonJun 27, 2023
  30. Junio C HamanoJun 27, 2023
  31. Jeff KingJun 27, 2023
  32. 7/7 var: add config file locationsbrian m. carlson, Jun 26, 2023
  33. Junio C HamanoJun 26, 2023
  34. 0/8 Additional variables for git varbrian m. carlson, Jun 27, 2023
  35. 1/8 var: mark unused parameters in git_var callbacksbrian m. carlson, Jun 27, 2023
  36. 2/8 t: add a function to check executable bitbrian m. carlson, Jun 27, 2023
  37. 4/8 var: format variable structure with C99 initializersbrian m. carlson, Jun 27, 2023
  38. 3/8 var: add support for listing the shellbrian m. carlson, Jun 27, 2023
  39. 5/8 var: adjust memory allocation for stringsbrian m. carlson, Jun 27, 2023
  40. 8/8 var: add config file locationsbrian m. carlson, Jun 27, 2023
  41. 7/8 var: add attributes files locationsbrian m. carlson, Jun 27, 2023
  42. 6/8 attr: expose and rename accessor functionsbrian m. carlson, Jun 27, 2023

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.