"Johannes Schindelin via GitGitGadget" <gitgitgadget@xxxxxxxxx> writes: > diff --git a/builtin/var.c b/builtin/var.c > index 5dc384810c0..f4b1f34e403 100644 > --- a/builtin/var.c > +++ b/builtin/var.c > @@ -51,7 +51,13 @@ 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 > } We have done well without any ugly conditional compilation in this file so far. If we needed to report dynamic path on certain platforms, we'd need something a bit cleaner, like * rename "shell_path()" to something that is unlikely to conflict with others (e.g., "git_shell_path()") and make it extern * allow it to be overridden from compat/ which is often how we hide such an implementation quirk from the general code paths. > static char *git_attr_val_system(int ident_flag UNUSED) > diff --git a/t/t0007-git-var.sh b/t/t0007-git-var.sh > index ff4fd9348cc..9fc58823873 100755 > --- a/t/t0007-git-var.sh > +++ b/t/t0007-git-var.sh > @@ -157,7 +157,7 @@ test_expect_success POSIXPERM 'GIT_SHELL_PATH points to a valid executable' ' > test_expect_success MINGW 'GIT_SHELL_PATH points to a suitable shell' ' > shellpath=$(git var GIT_SHELL_PATH) && > case "$shellpath" in > - *sh) ;; > + [A-Z]:/*/sh.exe) test -f "$shellpath";; > *) return 1;; > esac > ' > > base-commit: 06e570c0dfb2a2deb64d217db78e2ec21672f558