rust-lang/git2-rs
GitHub: rust-lang/git2-rs
Rust 语言对 libgit2 的绑定库,让开发者能够以类型安全的方式在 Rust 程序中全面操作 Git 仓库。
Stars: 2039 | Forks: 444
# git2-rs
[文档](https://docs.rs/git2)
Rust 的 libgit2 绑定。
```
cargo add git2
```
## 功能特性
默认情况下,git2 包含对操作本地仓库的支持,但不
包含网络支持(例如克隆远程仓库)。如果你想
使用需要网络支持的功能,你可能需要 `"https"` 和/或
`"ssh"` 功能。如果你支持用户提供仓库 URL,你可能
需要同时启用这两者。
```
cargo add git2 --features https,ssh
```
## Rust 版本要求
git2-rs 可在 Rust 稳定版上运行,通常也支持最近的
上一个稳定版本。
## libgit2 版本
目前,该库需要 libgit2 1.9.0(或更新的补丁版本)。
libgit2 的源代码包含在 libgit2-sys crate 中,因此无需
预先安装 libgit2 库,libgit2-sys crate 会自行处理并/或
为你构建它。另一方面,如果存在适当版本的 `libgit2`,
`git2` 将尝试动态链接它。
更准确地说,如果同时满足以下两个条件,内置的
(vendored) `libgit2` 将被静态链接:
- 未设置环境变量 `LIBGIT2_NO_VENDOR=1`
- **并且**满足以下任一条件:a) 设置了 Cargo feature `vendored-libgit2`,或者 b) 在系统上
找不到适当版本的 `libgit2`。
特别要注意的是,环境变量会覆盖 Cargo feature。
## 构建 git2-rs
```
$ git clone https://github.com/rust-lang/git2-rs
$ cd git2-rs
$ cargo build
```
### 自动化测试
在每次提交时运行测试并处理所有相关的边缘情况
很快就会变得非常繁琐。如果你不在
本地运行测试,可以使用 GitHub 的自动化 CI 在你的提交上运行测试。
## 在 macOS 10.10+ 上构建
如果启用了 `ssh` 功能,则该库将依赖于
libssh2,而 libssh2 又依赖于 OpenSSL。要让 OpenSSL 正常工作,请按照
[`openssl` crate 的说明](https://github.com/sfackler/rust-openssl/blob/master/openssl/src/lib.rs#L31) 操作。
# 许可证
该项目根据以下任一许可证授权:
* Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) 或
https://www.apache.org/licenses/LICENSE-2.0)
* MIT license ([LICENSE-MIT](LICENSE-MIT) 或
https://opensource.org/licenses/MIT)
任君选择。
### 贡献
除非你明确声明,否则任何由你故意提交以包含在
git2-rs 中的贡献,如 Apache-2.0 许可证中所定义,均应按上述方式进行
双重许可,无需任何额外的条款或条件。
标签:API, Cargo, DNS解析, F语言绑定, Git, HTTPS, libgit2, libssh2, OpenSSL, Rust, SSH, 代码构建, 可视化界面, 安全可观测性, 安全测试工具, 开发库, 开源项目, 版本控制, 系统编程, 网络流量审计, 通知系统, 静态链接