From 717947ec8f623f58aaa5cf2113a1ca2f02c1be54 Mon Sep 17 00:00:00 2001 From: Alex Mylonas Date: Sat, 4 Oct 2025 14:30:43 +0300 Subject: [PATCH] fix: MacOS, Windows: No Git executable found --- src/fs/utils.rs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/fs/utils.rs b/src/fs/utils.rs index cfb2b46..179fdba 100644 --- a/src/fs/utils.rs +++ b/src/fs/utils.rs @@ -156,8 +156,14 @@ pub mod application { pub async fn find_git_executable>(min_version: S) -> Result { // parse the git version from the --version output fn parse_version(output: &str) -> Option { - let version_str = output.rsplit_once(' ')?.1.trim(); - Version::parse(version_str).ok() + // works for: + // Linux: git version 2.39.5 + // MacOS: git version 2.39.5 (Apple Git-154) + // Windows: git version 2.39.5.windows.1 + let version_str = output. + split_ascii_whitespace().nth(2).unwrap_or("unknown") + .split(".").take(3).collect::>().join("."); + Version::parse(&version_str).ok() } let min_version = @@ -205,7 +211,7 @@ pub mod application { let version_output = String::from_utf8_lossy(&output.stdout); debug!("Git version output: {}", version_output); - // Parse version from "git version 2.34.1" + // Parse version for all OS responses if let Some(version) = parse_version(&version_output) { if version >= min_version { info!("Found git executable: {} (version: {})", candidate, version);