33 releases (breaking)

0.54.0 Oct 22, 2024
0.52.0 Aug 22, 2024
0.51.1 Jul 23, 2024
0.49.0 Mar 14, 2024
0.33.2 Mar 26, 2023

#91 in Data structures

Download history 94698/week @ 2024-07-19 102943/week @ 2024-07-26 91946/week @ 2024-08-02 94057/week @ 2024-08-09 90137/week @ 2024-08-16 89793/week @ 2024-08-23 91145/week @ 2024-08-30 105147/week @ 2024-09-06 94267/week @ 2024-09-13 94904/week @ 2024-09-20 97602/week @ 2024-09-27 98111/week @ 2024-10-04 102403/week @ 2024-10-11 107524/week @ 2024-10-18 101256/week @ 2024-10-25 84729/week @ 2024-11-01

412,881 downloads per month
Used in 194 crates (5 directly)

MIT/Apache

1MB
16K SLoC

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 and index files. 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 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 delta tree acceleration structure can be built from pack data or an index in order to decompress packs in parallel and without any waste.

Feature Flags

Dependencies

~8–18MB
~254K SLoC