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, 代码构建, 可视化界面, 安全可观测性, 安全测试工具, 开发库, 开源项目, 版本控制, 系统编程, 网络流量审计, 通知系统, 静态链接