45 个版本 (重大更新)
0.35.0 | 2023年2月11日 |
---|---|
0.33.0 | 2023年1月10日 |
0.31.0 | 2022年12月30日 |
0.29.0 | 2022年11月21日 |
0.1.0 | 2020年7月12日 |
在 开发工具 中排名 2490
每月下载量 210 次
在 3 个 包中使用
2.5MB
54K SLoC
此包提供了 Repository
抽象,作为进入 git 所有功能的中心。
它功能强大,不会牺牲性能,同时与单独使用子包相比,增加了便利性。有时它可能隐藏复杂性,假设性能差异对于最少数量的工具并不重要,这些工具直接使用底层包或提交一个问题。
引入和扩展
使用 use git_repository::prelude::*
,您应该可以开始使用,因为它引入了各种扩展特性,使功能可用于可能使用它的对象。
方法签名仍然很复杂,可能需要各种参数进行配置和缓存控制。
大多数对现有对象的扩展都提供了一个 obj_with_extension.attach(&repo).an_easier_version_of_a_method()
,用于更简单的调用签名。
线程安全模式
默认情况下,Repository
不是 Sync
,因此不能用于需要 Sync
特性的某些上下文。
为此,可以使用 [.into_sync()
][Repository::into_sync()] 将其转换为 ThreadSafeRepository
。
对象访问性能
快速访问对象是使用git的基本技能,仅次于访问引用。因此,了解哪些缓存级别存在以及如何利用它们至关重要。
访问对象时,首先查询的是内存限制的LRU对象缓存,将它们的ID映射到数据和类型。必须在特定的Repository
中特别启用。如果发生未命中,将查找对象,如果命中包,则有一个小的固定大小的缓存用于delta-base对象。
在多次访问相同对象的情况下,对象缓存非常有用,并可以通过[object_cache_size(…)
][crate::Repository::object_cache_size()]方法进行特定配置。
使用cache-efficiency-debug
cargo功能来了解缓存的效率 - 如果缓存在50%的时间内未命中,则性能可能会降低。
术语
WorkingTree和WorkTree
阅读git-worktree程序的标准文档时,会给人一种工作树和当前树可以互换使用的印象。我们仅使用术语工作树,并尽量保持一致,因为它较短且假设是相同的。
Cargo-features
为了使使用子crates更方便,这些功能被重新导出到此crate的根目录。在这里,我们列出如何访问嵌套的管道crates,这些crates通常更难发现
git_repository::
- [
odb
] protocol
特性标志
依赖项
~11-47MB
~785K SLoC