Don't skip worktree updates if unknown entries are removed

When rejoining a project, if entries were both created and deleted since
joining the project, the guest will receive those entries ids in as
removed.
This commit is contained in:
Max Brunsfeld 2023-04-05 15:36:01 -07:00
parent 661fba8640
commit 43a94cda5f

View file

@ -1227,12 +1227,11 @@ impl Snapshot {
let mut entries_by_path_edits = Vec::new(); let mut entries_by_path_edits = Vec::new();
let mut entries_by_id_edits = Vec::new(); let mut entries_by_id_edits = Vec::new();
for entry_id in update.removed_entries { for entry_id in update.removed_entries {
let entry = self if let Some(entry) = self.entry_for_id(ProjectEntryId::from_proto(entry_id)) {
.entry_for_id(ProjectEntryId::from_proto(entry_id))
.ok_or_else(|| anyhow!("unknown entry {}", entry_id))?;
entries_by_path_edits.push(Edit::Remove(PathKey(entry.path.clone()))); entries_by_path_edits.push(Edit::Remove(PathKey(entry.path.clone())));
entries_by_id_edits.push(Edit::Remove(entry.id)); entries_by_id_edits.push(Edit::Remove(entry.id));
} }
}
for entry in update.updated_entries { for entry in update.updated_entries {
let entry = Entry::try_from((&self.root_char_bag, entry))?; let entry = Entry::try_from((&self.root_char_bag, entry))?;