diff --git a/crates/buffer_diff/src/buffer_diff.rs b/crates/buffer_diff/src/buffer_diff.rs index cc80efcb1f..6b0d313b01 100644 --- a/crates/buffer_diff/src/buffer_diff.rs +++ b/crates/buffer_diff/src/buffer_diff.rs @@ -835,12 +835,12 @@ impl BufferDiff { pub fn start_pending_op(&mut self) { self.pending_ops += 1; - dbg!(("start", self.pending_ops)); + dbg!("start_pending_op", self.pending_ops); } pub fn end_pending_op(&mut self, result: &Option>, cx: &mut Context) { self.pending_ops = self.pending_ops.saturating_sub(1); - dbg!("end", self.pending_ops); + dbg!("end_pending_op", self.pending_ops); if let Some(Err(_)) = result { if let Some(changed_range) = self.clear_pending_hunks() { cx.emit(BufferDiffEvent::DiffChanged { diff --git a/crates/git/src/repository.rs b/crates/git/src/repository.rs index d0c6fdf5fa..27bc2f7108 100644 --- a/crates/git/src/repository.rs +++ b/crates/git/src/repository.rs @@ -427,7 +427,11 @@ impl GitRepository for RealGitRepository { content: Option, env: &HashMap, ) -> anyhow::Result<()> { - let working_directory = self.working_directory()?; + let repo = self.repository.lock(); + let working_directory = repo + .workdir() + .context("failed to read git work directory") + .map(Path::to_path_buf)?; if let Some(content) = content { let mut child = new_std_command(&self.git_binary_path) .current_dir(&working_directory) diff --git a/crates/project/src/buffer_store.rs b/crates/project/src/buffer_store.rs index 1d8ac37a35..3540251ce3 100644 --- a/crates/project/src/buffer_store.rs +++ b/crates/project/src/buffer_store.rs @@ -143,7 +143,7 @@ impl BufferDiffState { Some(rx) } - pub fn diff_bases_changed( + fn diff_bases_changed( &mut self, buffer: text::BufferSnapshot, diff_bases_change: DiffBasesChange, @@ -834,7 +834,6 @@ impl LocalBufferStore { } cx.spawn(move |this, mut cx| async move { - git_store.wait_for_pending_index_writes().await; let snapshot = worktree_handle.update(&mut cx, |tree, _| tree.as_local().unwrap().snapshot())?; let diff_bases_changes_by_buffer = cx @@ -844,11 +843,13 @@ impl LocalBufferStore { .filter_map(|(buffer, path, current_index_text, current_head_text)| { let local_repo = snapshot.local_repo_for_path(&path)?; let relative_path = local_repo.relativize(&path).ok()?; + dbg!("start loading index text {:?}", &relative_path); let index_text = if current_index_text.is_some() { local_repo.repo().load_index_text(&relative_path) } else { None }; + dbg!("start loading head text {:?}", &relative_path); let head_text = if current_head_text.is_some() { local_repo.repo().load_committed_text(&relative_path) } else { diff --git a/crates/project/src/git.rs b/crates/project/src/git.rs index cb5e9ef3a2..dfcb39fd3e 100644 --- a/crates/project/src/git.rs +++ b/crates/project/src/git.rs @@ -1651,7 +1651,12 @@ impl Repository { Some(GitJobKey::WriteIndex(path.clone())), |git_repo| async move { match git_repo { - GitRepo::Local(repo) => repo.set_index_text(&path, content, &env.await), + GitRepo::Local(repo) => { + dbg!("set_index_text >>>"); + let result = repo.set_index_text(&path, content, &env.await); + dbg!("set_index_text <<<"); + result + } GitRepo::Remote { project_id, client,