diff --git a/Cargo.lock b/Cargo.lock index 6b2a3bedd1..3f22c2ca6b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1138,6 +1138,7 @@ version = "0.4.0" dependencies = [ "git2", "git2-testing", + "gix-path", "log", "pretty_assertions", "shellexpand", diff --git a/git2-hooks/Cargo.toml b/git2-hooks/Cargo.toml index 3fab403cd2..6bdd0497a9 100644 --- a/git2-hooks/Cargo.toml +++ b/git2-hooks/Cargo.toml @@ -14,6 +14,7 @@ keywords = ["git"] [dependencies] git2 = ">=0.17" +gix-path = "0.10" log = "0.4" shellexpand = "3.1" thiserror = "2.0" diff --git a/git2-hooks/src/hookspath.rs b/git2-hooks/src/hookspath.rs index 1518bfd76f..eabf575ca8 100644 --- a/git2-hooks/src/hookspath.rs +++ b/git2-hooks/src/hookspath.rs @@ -225,7 +225,7 @@ impl HookPaths { } fn sh_command() -> Command { - let mut command = Command::new(sh_path()); + let mut command = Command::new(gix_path::env::shell()); if cfg!(windows) { // This call forces Command to handle the Path environment correctly on windows, @@ -243,30 +243,6 @@ fn sh_command() -> Command { command } -/// Get the path to the sh executable. -/// On Windows get the sh.exe bundled with Git for Windows -pub fn sh_path() -> PathBuf { - if cfg!(windows) { - Command::new("where.exe") - .arg("git") - .output() - .ok() - .map(|out| { - PathBuf::from(Into::::into( - String::from_utf8_lossy(&out.stdout), - )) - }) - .as_deref() - .and_then(Path::parent) - .and_then(Path::parent) - .map(|p| p.join("usr/bin/sh.exe")) - .filter(|p| p.exists()) - .unwrap_or_else(|| "sh".into()) - } else { - "sh".into() - } -} - #[cfg(unix)] fn is_executable(path: &Path) -> bool { use std::os::unix::fs::PermissionsExt;