是否可以从私有远程git获取Cargo fetch依赖项?

Lin*_*ope 13 rust rust-cargo

我在一个ssh友好的实验室机器上有一个帐户,我存储了很多私人项目,所以我可以从多台计算机访问它们(它允许我只使用我的几个私人Github存储库来处理多个人将要处理的事情).

Rust似乎很有能力通过使用像这样的东西来获取本地和公共数据

[dependencies.foo]
git = "https://github.com/bar/foo"

[dependencies.baz]
path = "/path/to/baz"
Run Code Online (Sandbox Code Playgroud)

但我还没有找到一种方法让它使用ssh git工作(例如git = "git@github.com:bar/foo",或者在我的情况下labmachine:bar/foo).我有无密码/ keygen ssh设置,如果这有帮助.

如果不存在,这不是什么大问题.目前我只是手动克隆存储库和使用path = ../foo,只要我保持我的目录结构相同,并记住pull在我的所有机器上手动所有依赖项.但是,如果我可以设置Cargo来做这件事会让事情变得容易多了,特别是如果我只需要在我的笔记本电脑上快速演示一些东西.

Ste*_*ell 6

在macOS Sierra上,我不得不创建一个.ssh/config这样的文件:

Host *
   UseKeychain yes
   AddKeysToAgent yes
   IdentityFile ~/.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)

使用指向的私钥(RSA)文件,然后发出命令:

ssh-add -K ~/.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)

哪个(最后!)允许一个条目,如:

git = "ssh://git@github.com/skipjaq/loda.git"
Run Code Online (Sandbox Code Playgroud)

完美地工作.

我不知道我多久会重复一次这个ssh-add命令,但看起来应该至少要等到下次重启.

这种异常显然是ssh-agentmacOS Sierra的一个特征.


Chr*_*gan 4

使用完整的 SSH 路径而不是 Git\xe2\x80\x99s 简写:

\n\n
git = "ssh://landmachine/bar/foo"\n
Run Code Online (Sandbox Code Playgroud)\n

  • 嗯,没工作。如果我使用在`~/.ssh/config`中定义的别名,我会得到“没有这样的已知主机”。输入完整的 url 会出现“身份验证错误:连接代理失败”。为了清楚起见,我检查了完整的 ssh 路径是否适用于“git clone”。 (2认同)