让存储库的origin
远程有一个ssh url。所以下面的代码:
remote = Rugged::Remote.lookup(repo, "origin")
remote.connect(:fetch)
提高Rugged::SshError: Cannot set up SSH connection without credentials
.
看起来rugged
支持SSH传输,因为有Rugged::Credentials::SshKey
类,并且可以为Repository.clone_at
提供:credentials
选项。但是我没有看到任何方法可以为源代码中的Remote#connect
提供凭据。我错过了什么吗?
如果可以通过ssh连接,有没有办法从ssh代理获取凭据?似乎libgit2
可以查询 ssh 代理。
目前,Rugged 不支持使用凭据的任意远程操作,也不支持 ssh-agent 凭据类型。
https://github.com/libgit2/rugged/pull/304 应该解决这个问题,但由于其他事情具有更高的优先级,已经被忽略了一段时间,现在与 Rugged 的最新变化有点脱节。我想尽快解决这个问题,然后在这里更新我的答案。我还将潜入支持查询 ssh 代理。