From 85f53f8f54b73ba3df69e7310b4b1afdae499b0a Mon Sep 17 00:00:00 2001 From: andrewjcg Date: Wed, 2 Oct 2024 12:27:08 -0400 Subject: [PATCH] feat: include `git` output error context on git failures (#1079) --- src/source/git_source.rs | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/src/source/git_source.rs b/src/source/git_source.rs index acd44282..f53e8837 100644 --- a/src/source/git_source.rs +++ b/src/source/git_source.rs @@ -41,9 +41,10 @@ pub fn fetch_repo( if !output.status.success() { tracing::debug!("Repository fetch for revision {:?} failed!", rev); - return Err(SourceError::GitErrorStr( - "failed to git fetch refs from origin", - )); + return Err(SourceError::GitError(format!( + "failed to git fetch refs from origin: {}", + std::str::from_utf8(&output.stderr).unwrap() + ))); } // try to suppress detached head warning @@ -62,7 +63,10 @@ pub fn fetch_repo( if !output.status.success() { tracing::debug!("Repository fetch for revision {:?} failed!", rev); - return Err(SourceError::GitErrorStr("failed to checkout FETCH_HEAD")); + return Err(SourceError::GitError(format!( + "failed to checkout FETCH_HEAD: {}", + std::str::from_utf8(&output.stderr).unwrap() + ))); } let output = git_command(system_tools, "checkout")? @@ -73,7 +77,10 @@ pub fn fetch_repo( if !output.status.success() { tracing::debug!("Repository checkout for revision {:?} failed!", rev); - return Err(SourceError::GitErrorStr("failed to checkout FETCH_HEAD")); + return Err(SourceError::GitError(format!( + "failed to checkout FETCH_HEAD: {}", + std::str::from_utf8(&output.stderr).unwrap() + ))); } // Update submodules @@ -84,7 +91,10 @@ pub fn fetch_repo( if !output.status.success() { tracing::debug!("Submodule update failed!"); - return Err(SourceError::GitErrorStr("failed to update submodules")); + return Err(SourceError::GitError(format!( + "failed to update submodules: {}", + std::str::from_utf8(&output.stderr).unwrap() + ))); } tracing::debug!("Repository fetched successfully!");