2 个版本
0.1.1 | 2022年6月7日 |
---|---|
0.1.0 | 2022年6月7日 |
#1151 in 开发工具
741 每月下载次数
用于 viewy
5KB
77 行
git-download
微服务架构需要共享服务定义文件,如协议缓冲区,以便客户端访问服务器。
为了共享这些文件,可以选择原始的复制粘贴方法,但这很容易受到人为错误的影响。
第二种方法是现在广泛接受的protodep,然而,这并不是 Rust 程序员的最佳解决方案
因为我们,Rust 程序员,希望像这样在 build.rs 中下载文件。
// build.rs
git_download::repo("https://github.com/akiradeveloper/lol")
.branch_name("v0.9.1")
.add_file("lol-core/proto/lol-core.proto", "proto/lol.proto")
.exec()?;
tonic_build::configure()
.build_server(false)
.compile(&["lol.proto"], &["proto"])?;
使用方法
[build-dependencies]
git-download = "0.1"
实现
内部,git-download 使用 sparse-checkout 来下载指定的文件而不是整个仓库。
下载的文件首先被放在临时目录中,该目录由 tempfile crate 创建。在 Linux 上,该目录位于 tmpfs 中,这是一个内存文件系统。因此,在将文件从 tmpfs 复制到目标路径之前,不会发生磁盘写入。我们可以通过比较复制前的内容来避免写入未更改的内容。
依赖
~6–16MB
~216K SLoC