diff --git a/crates/git/src/blame.rs b/crates/git/src/blame.rs index 54ff7f664acc1ca49ac65a763a321732c6fef12f..8eedefc6fe0842e13a8aad9b27539fc157c22381 100644 --- a/crates/git/src/blame.rs +++ b/crates/git/src/blame.rs @@ -63,6 +63,9 @@ impl Blame { } } +const GIT_BLAME_NO_COMMIT_ERROR: &'static str = "fatal: no such ref: HEAD"; +const GIT_BLAME_NO_PATH: &'static str = "fatal: no such path"; + fn run_git_blame( git_binary: &Path, working_directory: &Path, @@ -98,6 +101,10 @@ fn run_git_blame( if !output.status.success() { let stderr = String::from_utf8_lossy(&output.stderr); + let trimmed = stderr.trim(); + if trimmed == GIT_BLAME_NO_COMMIT_ERROR || trimmed.contains(GIT_BLAME_NO_PATH) { + return Ok(String::new()); + } return Err(anyhow!("git blame process failed: {}", stderr)); }