zed-industries/zed · error
no such worktree
Error message
no such worktree
What it means
Returned by copy_entry when worktree_for_entry finds no worktree containing the source ProjectEntryId (the entry was deleted or belongs to a removed worktree). The copy cannot proceed without the source worktree and fails with this sentinel.
Source
Thrown at crates/project/src/worktree_store.rs:546
.entry_for_id(entry_id)
.map(|e| (worktree.clone(), e))
})
}
pub fn entry_for_path<'a>(&'a self, path: &ProjectPath, cx: &'a App) -> Option<&'a Entry> {
self.worktree_for_id(path.worktree_id, cx)?
.read(cx)
.entry_for_path(&path.path)
}
pub fn copy_entry(
&mut self,
entry_id: ProjectEntryId,
new_project_path: ProjectPath,
cx: &mut Context<Self>,
) -> Task<Result<Option<Entry>>> {
let Some(old_worktree) = self.worktree_for_entry(entry_id, cx) else {
return Task::ready(Err(anyhow!("no such worktree")));
};
let Some(old_entry) = old_worktree.read(cx).entry_for_id(entry_id) else {
return Task::ready(Err(anyhow!("no such entry")));
};
let Some(new_worktree) = self.worktree_for_id(new_project_path.worktree_id, cx) else {
return Task::ready(Err(anyhow!("no such worktree")));
};
match &self.state {
WorktreeStoreState::Local { fs } => {
let old_abs_path = old_worktree.read(cx).absolutize(&old_entry.path);
let new_abs_path = new_worktree.read(cx).absolutize(&new_project_path.path);
let fs = fs.clone();
let copy = cx.background_spawn(async move {
copy_recursive(
fs.as_ref(),
&old_abs_path,
&new_abs_path,View on GitHub (pinned to f4178619ac)
Solutions
- Refresh the project panel and retry the copy
- Verify the source entry still exists
Defensive patterns
Strategy: type-guard
When it happens
Trigger: Thrown at crates/project/src/worktree_store.rs:546 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of zed-industries/zed@f4178619ac (2026-08-20).
Data as JSON: /api/errors/bf5ece65ca8bc011.
Report an issue: GitHub.