29 releases (breaking)

0.51.0 May 22, 2024
0.49.0 Mar 14, 2024
0.46.1 Dec 30, 2023
0.44.0 Oct 12, 2023
0.33.2 Mar 26, 2023

#666 in Data structures

Download history 87591/week @ 2024-03-02 86598/week @ 2024-03-09 99248/week @ 2024-03-16 92889/week @ 2024-03-23 90508/week @ 2024-03-30 84557/week @ 2024-04-06 89040/week @ 2024-04-13 88599/week @ 2024-04-20 89700/week @ 2024-04-27 93822/week @ 2024-05-04 100033/week @ 2024-05-11 95242/week @ 2024-05-18 90990/week @ 2024-05-25 100378/week @ 2024-06-01 92604/week @ 2024-06-08 83935/week @ 2024-06-15

383,384 downloads per month
Used in 157 crates (4 directly)

MIT/Apache

770KB
15K 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

~6–17MB
~241K SLoC