ssh: Fix incorrect handling of ssh paths that exist locally (#33743)

- Closes: https://github.com/zed-industries/zed/issues/33733

I also tested that remote canonicalization of symlink directories still
works. (e.g. `zed ssh://hostname/~/foo` where `foo -> foobar` will open
`~/foobar` on the remote).

I believe this has been broken since 2024-10-11 from
https://github.com/zed-industries/zed/pull/19057. CC: @SomeoneToIgnore.
I guess I'm the only person silly enough to run `zed
ssh://hostname/tmp`.

Release Notes:

- ssh: Fixed an issue where Zed incorrectly canonicalized paths locally
prior to connecting to the ssh remote.
This commit is contained in:
Peter Tripp 2025-07-07 10:55:37 -04:00 committed by GitHub
parent 82aee6bcf7
commit f785853239
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -727,11 +727,10 @@ fn handle_open_request(request: OpenRequest, app_state: Arc<AppState>, cx: &mut
if let Some(connection_options) = request.ssh_connection {
cx.spawn(async move |mut cx| {
let paths_with_position =
derive_paths_with_position(app_state.fs.as_ref(), request.open_paths).await;
let paths: Vec<PathBuf> = request.open_paths.into_iter().map(PathBuf::from).collect();
open_ssh_project(
connection_options,
paths_with_position.into_iter().map(|p| p.path).collect(),
paths,
app_state,
workspace::OpenOptions::default(),
&mut cx,