Rust
实际场景,不仅需要依赖https://crates.io/的公共mod
,自己依赖的git
私库服务也是常见现象。 cargo
正好也解决了私库依赖的问题。详细说明见链接: https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html#specifying-dependencies-from-git-repositories
cargo依赖git私库解决办法
- 1. 添加
.ssh/config
配置
Host *
UseKeychain yes
AddKeysToAgent yes
IdentityFile ~/.ssh/id_rsa
- 2. 指定私钥文件
MACOS下执行: ssh-add -K ~/.ssh/id_rsa
Linux下执行: ssh-add -k ~/.ssh/id_rsa
- 3. cargo 的toml文件添加依赖,如下
[package]
name = "demo_rust"
version = "0.1.0"
authors = ["baoyachi <baoyachi>"]
edition = "2018"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
json = "0.4"
pretty_env_logger = "0.3"
serde = "1.0"
common-utils = { git = "ssh://git@xxx.com/common/common-utils.git", tag = "v0.0.1" }
common-log = { git = "ssh://git@xxx.com/common/common-log.git", branch = "master" }
这里的 common-utils
common-log
就是私库的具体依赖。
common-utils = { git = "ssh://git@xxx.com/common/common-utils.git", tag = "v0.0.1" }
common-log = { git = "ssh://git@xxx.com/common/common-log.git", branch = "master" }
- 这里的git使用
ssh
方式访问 - tag :表示当前
git
上的tag
号 - branch :表示当前
git
的 分支号 通常,我们会采用tag
对依赖的git代码管理;branch
的缺点无法lock
代码。 - 执行cargo build 正常情况下,
cargo build
可以正常下载crates.io
和git私库代码
- 关于Rust crates 国内镜像源加速配置,请点击查看:
- 关于Rust 下载安装加速指南,请点击查看
- 关于Rust错误处理,请点击查看
--------分割线----------
update:2020-04-16
如果遇到 ssh-agent失败问题,请查看链接:https://github.com/rust-lang/cargo/issues/2078
在config文件添加如下配置:
[net]
git-fetch-with-cli = true