1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#![deny(missing_docs, unsafe_code, rust_2018_idioms)]

//! Git stores all of its data as _Objects_, which are data along with a hash over all data. Storing objects efficiently
//! is what git packs are concerned about.
//!
//! Packs consist of [data files][data::File] and [index files][index::File]. The latter can be generated from a data file
//! and make accessing objects within a pack feasible.
//!
//! A [Bundle] conveniently combines a data pack alongside its index to allow [finding][Find] objects or verifying the pack.
//! Objects returned by `.find(…)` are [objects][data::Object] which know their pack location in order to speed up
//! various common operations like creating new packs from existing ones.
//!
//! When traversing all objects in a pack, a [Tree acceleration structure][tree::Tree] can be built from pack data or an index
//! in order to decompress packs in parallel and without any waste.

///
pub mod bundle;
pub use crate::bundle::Bundle;

///
pub mod find;
#[doc(inline)]
pub use find::{Find, FindExt};

///
pub mod cache;
///
pub mod data;
///
pub mod index;
///
pub mod tree;

///
pub mod loose;