28 releases (breaking)

0.50.0 Apr 13, 2024
0.49.0 Mar 14, 2024
0.48.0 Feb 25, 2024
0.46.1 Dec 30, 2023
0.33.2 Mar 26, 2023

#652 in Data structures

Download history 65101/week @ 2024-01-03 63119/week @ 2024-01-10 72334/week @ 2024-01-17 70742/week @ 2024-01-24 78784/week @ 2024-01-31 80250/week @ 2024-02-07 80745/week @ 2024-02-14 80965/week @ 2024-02-21 88283/week @ 2024-02-28 84234/week @ 2024-03-06 92316/week @ 2024-03-13 101134/week @ 2024-03-20 89734/week @ 2024-03-27 85314/week @ 2024-04-03 89491/week @ 2024-04-10 72497/week @ 2024-04-17

353,450 downloads per month
Used in 143 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–18MB
~239K SLoC