collab: Fix project sharing between Windows and Unix (#23680)
Closes #14258 Windows user(host) sharing a project to a guest(using macOS), and host follows guest: https://github.com/user-attachments/assets/ba306b6b-23f7-48b1-8ba8-fdc5992d8f00 macOS user(host) sharing a project to a guest(using Windows), and host follows guest: https://github.com/user-attachments/assets/c5ee5e78-870d-49e5-907d-8565977a01ae macOS user edits files in a windows project through collab: https://github.com/user-attachments/assets/581057cf-e7df-4e56-a0ce-ced74339906a Release Notes: - N/A
This commit is contained in:
parent
929c5e76b4
commit
c1f162abc6
14 changed files with 226 additions and 117 deletions
|
@ -7,18 +7,17 @@ use paths::{
|
|||
local_settings_file_relative_path, local_tasks_file_relative_path,
|
||||
local_vscode_tasks_file_relative_path, EDITORCONFIG_NAME,
|
||||
};
|
||||
use rpc::{proto, AnyProtoClient, TypedEnvelope};
|
||||
use rpc::{
|
||||
proto::{self, FromProto, ToProto},
|
||||
AnyProtoClient, TypedEnvelope,
|
||||
};
|
||||
use schemars::JsonSchema;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use settings::{
|
||||
parse_json_with_comments, InvalidSettingsError, LocalSettingsKind, Settings, SettingsLocation,
|
||||
SettingsSources, SettingsStore,
|
||||
};
|
||||
use std::{
|
||||
path::{Path, PathBuf},
|
||||
sync::Arc,
|
||||
time::Duration,
|
||||
};
|
||||
use std::{path::Path, sync::Arc, time::Duration};
|
||||
use task::{TaskTemplates, VsCodeTaskFile};
|
||||
use util::ResultExt;
|
||||
use worktree::{PathChange, UpdatedEntriesSet, Worktree, WorktreeId};
|
||||
|
@ -292,7 +291,7 @@ impl SettingsObserver {
|
|||
.send(proto::UpdateWorktreeSettings {
|
||||
project_id,
|
||||
worktree_id,
|
||||
path: path.to_string_lossy().into(),
|
||||
path: path.to_proto(),
|
||||
content: Some(content),
|
||||
kind: Some(
|
||||
local_settings_kind_to_proto(LocalSettingsKind::Settings).into(),
|
||||
|
@ -305,7 +304,7 @@ impl SettingsObserver {
|
|||
.send(proto::UpdateWorktreeSettings {
|
||||
project_id,
|
||||
worktree_id,
|
||||
path: path.to_string_lossy().into(),
|
||||
path: path.to_proto(),
|
||||
content: Some(content),
|
||||
kind: Some(
|
||||
local_settings_kind_to_proto(LocalSettingsKind::Editorconfig).into(),
|
||||
|
@ -343,7 +342,7 @@ impl SettingsObserver {
|
|||
this.update_settings(
|
||||
worktree,
|
||||
[(
|
||||
PathBuf::from(&envelope.payload.path).into(),
|
||||
Arc::<Path>::from_proto(envelope.payload.path.clone()),
|
||||
local_settings_kind_from_proto(kind),
|
||||
envelope.payload.content,
|
||||
)],
|
||||
|
@ -551,7 +550,7 @@ impl SettingsObserver {
|
|||
.send(proto::UpdateWorktreeSettings {
|
||||
project_id: self.project_id,
|
||||
worktree_id: remote_worktree_id.to_proto(),
|
||||
path: directory.to_string_lossy().into_owned(),
|
||||
path: directory.to_proto(),
|
||||
content: file_content,
|
||||
kind: Some(local_settings_kind_to_proto(kind).into()),
|
||||
})
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue