Merge pull request #1870 from zed-industries/fix-remote-abs-paths
Fix bug where absolute paths of worktrees were not being stored on the server
This commit is contained in:
commit
a6198c9a1a
5 changed files with 109 additions and 14 deletions
|
@ -5579,6 +5579,13 @@ async fn test_random_collaboration(
|
|||
guest_client.username,
|
||||
id
|
||||
);
|
||||
assert_eq!(
|
||||
guest_snapshot.abs_path(),
|
||||
host_snapshot.abs_path(),
|
||||
"{} has different abs path than the host for worktree {}",
|
||||
guest_client.username,
|
||||
id
|
||||
);
|
||||
assert_eq!(
|
||||
guest_snapshot.entries(false).collect::<Vec<_>>(),
|
||||
host_snapshot.entries(false).collect::<Vec<_>>(),
|
||||
|
|
|
@ -42,7 +42,6 @@ use std::{
|
|||
marker::PhantomData,
|
||||
net::SocketAddr,
|
||||
ops::{Deref, DerefMut},
|
||||
os::unix::prelude::OsStrExt,
|
||||
rc::Rc,
|
||||
sync::{
|
||||
atomic::{AtomicBool, Ordering::SeqCst},
|
||||
|
@ -945,7 +944,7 @@ impl Server {
|
|||
id: *id,
|
||||
root_name: worktree.root_name.clone(),
|
||||
visible: worktree.visible,
|
||||
abs_path: worktree.abs_path.as_os_str().as_bytes().to_vec(),
|
||||
abs_path: worktree.abs_path.clone(),
|
||||
})
|
||||
.collect::<Vec<_>>();
|
||||
|
||||
|
@ -996,7 +995,7 @@ impl Server {
|
|||
let message = proto::UpdateWorktree {
|
||||
project_id: project_id.to_proto(),
|
||||
worktree_id: *worktree_id,
|
||||
abs_path: worktree.abs_path.as_os_str().as_bytes().to_vec(),
|
||||
abs_path: worktree.abs_path.clone(),
|
||||
root_name: worktree.root_name.clone(),
|
||||
updated_entries: worktree.entries.values().cloned().collect(),
|
||||
removed_entries: Default::default(),
|
||||
|
@ -1105,6 +1104,7 @@ impl Server {
|
|||
project_id,
|
||||
worktree_id,
|
||||
&request.payload.root_name,
|
||||
&request.payload.abs_path,
|
||||
&request.payload.removed_entries,
|
||||
&request.payload.updated_entries,
|
||||
request.payload.scan_id,
|
||||
|
|
|
@ -61,7 +61,7 @@ pub struct Collaborator {
|
|||
|
||||
#[derive(Default, Serialize)]
|
||||
pub struct Worktree {
|
||||
pub abs_path: PathBuf,
|
||||
pub abs_path: Vec<u8>,
|
||||
pub root_name: String,
|
||||
pub visible: bool,
|
||||
#[serde(skip)]
|
||||
|
@ -711,7 +711,11 @@ impl Store {
|
|||
Worktree {
|
||||
root_name: worktree.root_name,
|
||||
visible: worktree.visible,
|
||||
..Default::default()
|
||||
abs_path: worktree.abs_path.clone(),
|
||||
entries: Default::default(),
|
||||
diagnostic_summaries: Default::default(),
|
||||
scan_id: Default::default(),
|
||||
is_complete: Default::default(),
|
||||
},
|
||||
)
|
||||
})
|
||||
|
@ -790,7 +794,11 @@ impl Store {
|
|||
Worktree {
|
||||
root_name: worktree.root_name.clone(),
|
||||
visible: worktree.visible,
|
||||
..Default::default()
|
||||
abs_path: worktree.abs_path.clone(),
|
||||
entries: Default::default(),
|
||||
diagnostic_summaries: Default::default(),
|
||||
scan_id: Default::default(),
|
||||
is_complete: false,
|
||||
},
|
||||
);
|
||||
}
|
||||
|
@ -942,6 +950,7 @@ impl Store {
|
|||
project_id: ProjectId,
|
||||
worktree_id: u64,
|
||||
worktree_root_name: &str,
|
||||
worktree_abs_path: &[u8],
|
||||
removed_entries: &[u64],
|
||||
updated_entries: &[proto::Entry],
|
||||
scan_id: u64,
|
||||
|
@ -952,6 +961,7 @@ impl Store {
|
|||
let connection_ids = project.connection_ids();
|
||||
let mut worktree = project.worktrees.entry(worktree_id).or_default();
|
||||
worktree.root_name = worktree_root_name.to_string();
|
||||
worktree.abs_path = worktree_abs_path.to_vec();
|
||||
|
||||
for entry_id in removed_entries {
|
||||
worktree.entries.remove(entry_id);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue