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][gix_object::Data] 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.