From: "Johannes Schindelin via GitGitGadget" <gitgitgadget@gmail.com>
To: git@vger.kernel.org
Cc: "brian m. carlson" <sandals@crustytoothpaste.net>,
Phillip Wood <phillip.wood123@gmail.com>,
Johannes Schindelin <johannes.schindelin@gmx.de>
Subject: [PATCH v2 0/7] var(win32): do report the GIT_SHELL_PATH that is actually used
Date: Thu, 11 Jul 2024 23:11:29 +0000 [thread overview]
Message-ID: <pull.1760.v2.git.1720739496.gitgitgadget@gmail.com> (raw)
In-Reply-To: <pull.1760.git.1720443778074.gitgitgadget@gmail.com>
Changes since v1:
* This patch series now shares the logic that determines the path of the
Unix shell that Git uses between prepare_shell_cmd() and git var
GIT_SHELL_PATH.
Johannes Schindelin (7):
run-command: refactor getting the Unix shell path into its own
function
strvec: declare the `strvec_push_nodup()` function globally
win32: override `fspathcmp()` with a directory separator-aware version
mingw(is_msys2_sh): handle forward slashes in the `sh.exe` path, too
run-command(win32): resolve the path to the Unix shell early
run-command: declare the `git_shell_path()` function globally
var(win32): do report the GIT_SHELL_PATH that is actually used
builtin/var.c | 3 ++-
compat/mingw.c | 2 +-
compat/win32/path-utils.c | 25 +++++++++++++++++++++++++
compat/win32/path-utils.h | 2 ++
dir.c | 2 +-
dir.h | 2 +-
git-compat-util.h | 5 +++++
run-command.c | 17 ++++++++++++-----
run-command.h | 5 +++++
strvec.c | 2 +-
strvec.h | 3 +++
t/t0007-git-var.sh | 2 +-
12 files changed, 59 insertions(+), 11 deletions(-)
base-commit: 06e570c0dfb2a2deb64d217db78e2ec21672f558
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1760%2Fdscho%2Fgit-var-on-windows-v2
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1760/dscho/git-var-on-windows-v2
Pull-Request: https://github.com/gitgitgadget/git/pull/1760
Range-diff vs v1:
-: ----------- > 1: e0970381042 run-command: refactor getting the Unix shell path into its own function
-: ----------- > 2: 91ebccbc39f strvec: declare the `strvec_push_nodup()` function globally
-: ----------- > 3: a718183bb3b win32: override `fspathcmp()` with a directory separator-aware version
-: ----------- > 4: f04cfd91bd9 mingw(is_msys2_sh): handle forward slashes in the `sh.exe` path, too
-: ----------- > 5: 707daf246bd run-command(win32): resolve the path to the Unix shell early
-: ----------- > 6: a74a7b4bb11 run-command: declare the `git_shell_path()` function globally
1: ef62c3fc122 ! 7: 8bfd23cfa00 var(win32): do report the GIT_SHELL_PATH that is actually used
@@ Commit message
associated with the current directory.
To that end, Git does not actually use the path `/bin/sh` that is
- recorded e.g. in Unix shell scripts' hash-bang lines. Instead, as of
- 776297548e (Do not use SHELL_PATH from build system in prepare_shell_cmd
- on Windows, 2012-04-17), it re-interprets `/bin/sh` as "look up `sh` on
- the `PATH` and use the result instead".
+ recorded e.g. when `run_command()` is called with a Unix shell
+ command-line. Instead, as of 776297548e (Do not use SHELL_PATH from
+ build system in prepare_shell_cmd on Windows, 2012-04-17), it
+ re-interprets `/bin/sh` as "look up `sh` on the `PATH` and use the
+ result instead".
+
+ This is the logic users expect to be followed when running `git var
+ GIT_SHELL_PATH`.
However, when 1e65721227 (var: add support for listing the shell,
2023-06-27) introduced support for `git var GIT_SHELL_PATH`, Windows was
not special-cased as above, which is why it outputs `/bin/sh` even
though that disagrees with what Git actually uses.
- Let's fix this, and also adjust the corresponding test case to verify
- that it actually finds a working executable.
+ Let's fix this by using the exact same logic as `prepare_shell_cmd()`,
+ adjusting the Windows-specific `git var GIT_SHELL_PATH` test case to
+ verify that it actually finds a working executable.
Reported-by: Phillip Wood <phillip.wood123@gmail.com>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
## builtin/var.c ##
+@@
+ #include "refs.h"
+ #include "path.h"
+ #include "strbuf.h"
++#include "run-command.h"
+
+ static const char var_usage[] = "git var (-l | <variable>)";
+
@@ builtin/var.c: static char *default_branch(int ident_flag UNUSED)
static char *shell_path(int ident_flag UNUSED)
{
-+#ifdef WIN32
-+ char *p = locate_in_PATH("sh");
-+ convert_slashes(p);
-+ return p;
-+#else
- return xstrdup(SHELL_PATH);
-+#endif
+- return xstrdup(SHELL_PATH);
++ return git_shell_path();
}
static char *git_attr_val_system(int ident_flag UNUSED)
--
gitgitgadget
next prev parent reply other threads:[~2024-07-11 23:11 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-08 13:02 [PATCH] var(win32): do report the GIT_SHELL_PATH that is actually used Johannes Schindelin via GitGitGadget
2024-07-08 18:54 ` Junio C Hamano
2024-07-08 23:40 ` brian m. carlson
2024-07-08 23:55 ` Junio C Hamano
2024-07-09 0:25 ` brian m. carlson
2024-07-09 16:31 ` Junio C Hamano
2024-07-09 13:53 ` Phillip Wood
2024-07-08 19:03 ` Junio C Hamano
2024-07-09 8:55 ` Phillip Wood
2024-07-11 12:03 ` Johannes Schindelin
2024-07-17 14:55 ` phillip.wood123
2024-07-11 23:11 ` Johannes Schindelin via GitGitGadget [this message]
2024-07-11 23:11 ` [PATCH v2 1/7] run-command: refactor getting the Unix shell path into its own function Johannes Schindelin via GitGitGadget
2024-07-11 23:11 ` [PATCH v2 2/7] strvec: declare the `strvec_push_nodup()` function globally Johannes Schindelin via GitGitGadget
2024-07-11 23:11 ` [PATCH v2 3/7] win32: override `fspathcmp()` with a directory separator-aware version Johannes Schindelin via GitGitGadget
2024-07-12 13:46 ` Phillip Wood
2024-07-11 23:11 ` [PATCH v2 4/7] mingw(is_msys2_sh): handle forward slashes in the `sh.exe` path, too Johannes Schindelin via GitGitGadget
2024-07-12 13:49 ` Phillip Wood
2024-07-11 23:11 ` [PATCH v2 5/7] run-command(win32): resolve the path to the Unix shell early Johannes Schindelin via GitGitGadget
2024-07-11 23:11 ` [PATCH v2 6/7] run-command: declare the `git_shell_path()` function globally Johannes Schindelin via GitGitGadget
2024-07-11 23:11 ` [PATCH v2 7/7] var(win32): do report the GIT_SHELL_PATH that is actually used Johannes Schindelin via GitGitGadget
2024-07-12 15:35 ` Junio C Hamano
2024-07-12 13:51 ` [PATCH v2 0/7] " Phillip Wood
2024-07-12 22:16 ` Junio C Hamano
2024-07-13 21:08 ` [PATCH v3 " Johannes Schindelin via GitGitGadget
2024-07-13 21:08 ` [PATCH v3 1/7] run-command: refactor getting the Unix shell path into its own function Johannes Schindelin via GitGitGadget
2024-07-13 21:08 ` [PATCH v3 2/7] strvec: declare the `strvec_push_nodup()` function globally Johannes Schindelin via GitGitGadget
2024-07-13 21:08 ` [PATCH v3 3/7] win32: override `fspathcmp()` with a directory separator-aware version Johannes Schindelin via GitGitGadget
2024-07-13 21:08 ` [PATCH v3 4/7] mingw(is_msys2_sh): handle forward slashes in the `sh.exe` path, too Johannes Schindelin via GitGitGadget
2024-07-13 21:08 ` [PATCH v3 5/7] run-command(win32): resolve the path to the Unix shell early Johannes Schindelin via GitGitGadget
2024-07-13 21:08 ` [PATCH v3 6/7] run-command: declare the `git_shell_path()` function globally Johannes Schindelin via GitGitGadget
2024-07-13 21:08 ` [PATCH v3 7/7] var(win32): do report the GIT_SHELL_PATH that is actually used Johannes Schindelin via GitGitGadget
2024-07-17 14:51 ` [PATCH v3 0/7] " Phillip Wood
2024-07-17 22:47 ` brian m. carlson
2024-07-17 22:51 ` Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=pull.1760.v2.git.1720739496.gitgitgadget@gmail.com \
--to=gitgitgadget@gmail.com \
--cc=git@vger.kernel.org \
--cc=johannes.schindelin@gmx.de \
--cc=phillip.wood123@gmail.com \
--cc=sandals@crustytoothpaste.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.