#http-transport #git-repository #libcurl #libgit2 #http-request #git-clone #git2

git2-curl

libgit2 中由 libcurl 驱动的 HTTP 传输后端。旨在与 git2 crate 一起使用

29 个版本 (19 个破坏性版本)

0.20.0 2024 年 6 月 14 日
0.19.0 2023 年 8 月 28 日
0.18.0 2023 年 4 月 2 日
0.17.0 2023 年 1 月 10 日
0.2.2 2015 年 3 月 25 日

#55HTTP 服务器

Download history 35708/week @ 2024-05-03 33283/week @ 2024-05-10 32979/week @ 2024-05-17 31732/week @ 2024-05-24 34219/week @ 2024-05-31 34465/week @ 2024-06-07 34812/week @ 2024-06-14 34618/week @ 2024-06-21 33364/week @ 2024-06-28 33495/week @ 2024-07-05 34515/week @ 2024-07-12 35251/week @ 2024-07-19 36007/week @ 2024-07-26 32458/week @ 2024-08-02 35362/week @ 2024-08-09 32549/week @ 2024-08-16

每月 142,426 次下载
用于 140 个 Crates (5 个直接使用)

MIT/Apache

1MB
19K SLoC

git2-rs

文档

Rust 的 libgit2 绑定。

[dependencies]
git2 = "0.19.0"

Rust 版本要求

git2-rs 与稳定版 Rust 兼容,通常也与最近的稳定版本兼容。

libgit2 版本

目前这个库需要 libgit2 1.7.2(或更新的补丁版本)。libgit2 的源代码包含在 libgit2-sys crate 中,因此不需要预先安装 libgit2 库,libgit2-sys crate 会为你处理这个问题,或者为你构建它。另一方面,如果系统中有适当的 libgit2 版本,git2 将尝试动态链接它。

更准确地说,以下两种条件同时满足时,将使用存档的 libgit2 静态链接:

  • 环境变量 LIBGIT2_NO_VENDOR=1 没有设置
  • 并且 a) Cargo 功能 vendored-libgit2 已设置或 b) 系统中找不到适当的 libgit2 版本。

特别注意的是,环境变量覆盖了 Cargo 功能。

构建 git2-rs

$ git clone https://github.com/rust-lang/git2-rs
$ cd git2-rs
$ cargo build

自动化测试

在每次提交时运行测试和处理所有相关的边缘情况很快就会变得繁琐。为了自动化测试和处理未暂存更改的正确存档和取消存档,从而避免不愉快的惊喜,请使用以下位置的预提交钩子,并将其命名为 pre-commit 放置在 .git/hooks/ 中。您可能需要使用 chmod +x 添加执行权限。

要在简单的提交或文档修复中跳过测试,请使用 git commit --no-verify

在 macOS 10.10+ 上构建

如果启用了 ssh 功能(默认情况下是启用的),则此库依赖于 libssh2,它依赖于 OpenSSL。要使 OpenSSL 运作,请按照opensslcrate 的说明进行。

许可证

该项目根据您的选择受以下许可证之一许可

贡献

除非您明确声明,否则您提交给 git2-rs 以供包含的任何贡献,根据 Apache-2.0 许可证的定义,应按上述方式双许可,不附加任何额外条款或条件。


lib.rs:

这是一个用于将 libcurl 作为 git2-rs 的 HTTP Git 请求后端的 crate。

该 crate 提供了一个公共函数 register,它将为由 libgit2 执行的任何 HTTP 请求注册一个自定义 HTTP 传输。目前,由于与 git2::transport::register 相同的原因,该 register 函数也是不安全的。

建议尽可能不要使用此 crate。当前使用的 libcurl 后端 curl-rust 仅支持在单个方法调用中执行请求,这意味着没有流式传输支持。这相应地意味着在克隆存储库时,整个存储库的内容都会下载到内存中,然后由 libgit2 写入磁盘。将来应该能够减轻这个问题。

注意:目前,此 crate 很可能不支持 git push 操作,只支持克隆。

依赖关系

~14-22MB
~412K SLoC