🐇 How do you want to proceed from here Mr 🐢

🐢 I think I can implement the Rsync today. From the looks of https://docs.rs/ssh2/latest/ssh2/ though, I think we can implement file transfer without relying on rsync. It can be easier to implement everything within the code.

🐇 Then, you should rename the issue to new ssh.

🐢 Fair. There is also ssh_rs crate, but it doesn't have full support for the protocol. Instead we can have another command, like xvc storage new ssh that uses libssh2 above. It has some limitations on OpenSSH on macOS.

🐇 From the crate's Readme, it looks you can enable vendored-openssl feature to compile it statically.

🐢 Let's go ahead then. Better to compile it behind a feature flag though.

🐇 Yup. Rsync can be separate. I think at the moment you can implement rsync via Exec::cmd and make new ssh a new issue.

🐢 I'll copy this conversation there.

🐇 Now, let's start implementing rsync.

🐢 Do we really want to hide it behind a feature flag? It doesn't bring any extra complexity to generic for example. Just using the commands and returning the errors.

🐇 I think yes. If the user doesn't have rsync on their system, they can just get errors. We don't need to make the implementation optional, but tests might be so.

🐢 Ok.