Module Git.Pack

PACK serializer implementation.

module Kind : sig ... end

This module represents the kind of a Git object - but only the kind, Kind.t does not have the Git value.

module type H = sig ... end

This module is the serialiser of the list of hunks in the PACK entry when we retrieve a delta-ified Git object. This encoder is a non-blocking encoder used in the same time than the Deflater - that means the content produced is always deflated.

module Hunk : functor (Hash : sig ... end) -> H with module Hash := Hash
module type ENTRY = sig ... end

The entry module. It used to able to manipulate the meta-data only needed by the delta-ification of the Git object (and avoid to de-serialize all of the Git object to compute the delta-ification).

module Entry : functor (Hash : sig ... end) -> ENTRY with module Hash := Hash
module type DELTA = sig ... end

This module is the engine to delta-ify Git objects together. The current implementation is a stop the world process which can not compute iteratively the delta-ification for some Git objects.

module Delta : functor (Hash : sig ... end) -> functor (Entry : ENTRY with module Hash := Hash) -> DELTA with module Hash := Hash and module Entry := Entry
module type P = sig ... end

Interface which describes the encoder of the PACK file.

module Pack : functor (Hash : sig ... end) -> functor (Deflate : sig ... end) -> functor (Entry : ENTRY with module Hash := Hash) -> functor (Delta : DELTA with module Hash := Hash and module Entry := Entry) -> functor (Hunk : H with module Hash := Hash) -> P with module Hash := Hash and module Deflate := Deflate and module Entry := Entry and module Delta := Delta and module Hunk := Hunk

The functor to make the PACK encoder by a specific hash implementation and a specific deflate algorithm.

module Stream : functor (Hash : sig ... end) -> functor (Deflate : sig ... end) -> sig ... end with module Stream.Hash := Hash and module Stream.Deflate := Deflate