diff --git a/crates/project/src/project.rs b/crates/project/src/project.rs index a82b156b03..1cfd4ee8d5 100644 --- a/crates/project/src/project.rs +++ b/crates/project/src/project.rs @@ -6745,24 +6745,30 @@ impl Project { fn add_worktree(&mut self, worktree: &Model, cx: &mut ModelContext) { cx.observe(worktree, |_, _, cx| cx.notify()).detach(); - if worktree.read(cx).is_local() { - cx.subscribe(worktree, |this, worktree, event, cx| match event { + cx.subscribe(worktree, |this, worktree, event, cx| { + let is_local = worktree.read(cx).is_local(); + match event { worktree::Event::UpdatedEntries(changes) => { - this.update_local_worktree_buffers(&worktree, changes, cx); - this.update_local_worktree_language_servers(&worktree, changes, cx); - this.update_local_worktree_settings(&worktree, changes, cx); - this.update_prettier_settings(&worktree, changes, cx); + if is_local { + this.update_local_worktree_buffers(&worktree, changes, cx); + this.update_local_worktree_language_servers(&worktree, changes, cx); + this.update_local_worktree_settings(&worktree, changes, cx); + this.update_prettier_settings(&worktree, changes, cx); + } + cx.emit(Event::WorktreeUpdatedEntries( worktree.read(cx).id(), changes.clone(), )); } worktree::Event::UpdatedGitRepositories(updated_repos) => { - this.update_local_worktree_buffers_git_repos(worktree, updated_repos, cx) + if is_local { + this.update_local_worktree_buffers_git_repos(worktree, updated_repos, cx) + } } - }) - .detach(); - } + } + }) + .detach(); let push_strong_handle = { let worktree = worktree.read(cx);