ssh remoting: Expand tilde on host side (#18333)

This commit is contained in:
Thorsten Ball 2024-09-25 13:41:18 +02:00 committed by GitHub
parent 4e2ae06ca6
commit ccc871c44c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 11 additions and 3 deletions

View file

@ -221,10 +221,11 @@ impl WorktreeStore {
) -> Task<Result<Model<Worktree>, Arc<anyhow::Error>>> {
let mut abs_path = abs_path.as_ref().to_string_lossy().to_string();
// If we start with `/~` that means the ssh path was something like `ssh://user@host/~/home-dir-folder/`
// in which case want to strip the leading the `/` and expand the tilde.
// in which case want to strip the leading the `/`.
// On the host-side, the `~` will get expanded.
// That's what git does too: https://github.com/libgit2/libgit2/issues/3345#issuecomment-127050850
if abs_path.starts_with("/~") {
abs_path = shellexpand::tilde(&abs_path[1..]).to_string();
abs_path = abs_path[1..].to_string();
}
let root_name = PathBuf::from(abs_path.clone())
.file_name()

View file

@ -327,7 +327,14 @@ impl SshClientDelegate {
cx,
)
.await
.map_err(|e| anyhow::anyhow!("failed to download remote server binary: {}", e))?;
.map_err(|e| {
anyhow::anyhow!(
"failed to download remote server binary (os: {}, arch: {}): {}",
platform.os,
platform.arch,
e
)
})?;
Ok((binary_path, version))
}