Change summary
crates/project/src/environment.rs | 13 ++++++++++++-
crates/project/src/git_store.rs | 9 +++++----
2 files changed, 17 insertions(+), 5 deletions(-)
Detailed changes
@@ -60,7 +60,7 @@ impl ProjectEnvironment {
}
}
- /// Returns an iterator over all pairs `(worktree_id, error_message)` of
+ /// Returns an iterator over all pairs `(abs_path, error_message)` of
/// environment errors associated with this project environment.
pub(crate) fn environment_errors(
&self,
@@ -144,8 +144,15 @@ impl From<EnvironmentOrigin> for String {
}
}
+#[derive(Debug)]
pub struct EnvironmentErrorMessage(pub String);
+impl std::fmt::Display for EnvironmentErrorMessage {
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+ write!(f, "{}", self.0)
+ }
+}
+
impl EnvironmentErrorMessage {
#[allow(dead_code)]
fn from_str(s: &str) -> Self {
@@ -361,6 +368,10 @@ fn get_directory_env(
if let Some(error) = error_message {
this.update(cx, |this, cx| {
+ log::error!(
+ "error fetching environment for path {abs_path:?}: {}",
+ error
+ );
this.environment_error_messages.insert(abs_path, error);
cx.emit(ProjectEnvironmentEvent::ErrorsUpdated)
})
@@ -3632,12 +3632,13 @@ impl Repository {
.upgrade()
.ok_or_else(|| anyhow!("missing project environment"))?
.update(cx, |project_environment, cx| {
- project_environment.get_environment(Some(work_directory_abs_path), cx)
+ project_environment.get_environment(Some(work_directory_abs_path.clone()), cx)
})?
.await
- .ok_or_else(|| {
- anyhow!("failed to get environment for repository working directory")
- })?;
+ .unwrap_or_else(|| {
+ log::error!("failed to get working directory environment for repository {work_directory_abs_path:?}");
+ HashMap::default()
+ });
let backend = cx
.background_spawn(async move {
fs.open_repo(&dot_git_abs_path)