From 0e3767102a6bb5c14a319f7280bb289b55ca573b Mon Sep 17 00:00:00 2001 From: Joshix-1 <57299889+Joshix-1@users.noreply.github.com> Date: Wed, 16 Apr 2025 08:41:14 +0000 Subject: [PATCH] use gix_path::env::shell() to get the shell in git2-hooks (#2612) Co-authored-by: Johannes Agricola --- Cargo.lock | 1 + git2-hooks/Cargo.toml | 1 + git2-hooks/src/hookspath.rs | 26 +------------------------- 3 files changed, 3 insertions(+), 25 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 42bf83d8..2abe61b6 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 3fab403c..6bdd0497 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 a601b159..fc4db5c8 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;