package git

  1. Overview
  2. Docs
Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source

Module Stream.DeltaSource

Sourcetype t = {
  1. mutable delta : delta;
}

The type of the delta-ification.

Sourceand delta =
  1. | Z
    (*

    Means no delta-ification.

    *)
  2. | S of {
    1. length : int;
      (*

      Length of the PACK object.

      *)
    2. depth : int;
      (*

      Depth of the PACK object.

      *)
    3. hunks : Duff.t list;
      (*

      Compression list.

      *)
    4. src : t;
      (*

      Source.

      *)
    5. src_length : int64;
      (*

      Length of the source object.

      *)
    6. src_hash : Hash.t;
      (*

      Hash of the source object.

      *)
    }
    (*

    Delta-ification with a description of the source.

    *)
Sourcetype error =
  1. | Invalid_hash of Hash.t
    (*

    Appears when we have an invalid hash.

    *)

The type of error.

Sourceval pp_error : error Fmt.t

Pretty-printer for error.

Sourceval deltas : ?memory:bool -> Entry.t list -> (Hash.t -> Cstruct.t option Lwt.t) -> (Entry.t -> bool) -> int -> int -> ((Entry.t * t) list, error) result Lwt.t

deltas ?memory lst getter tagger window depth.

This is the main algorithm about the serialization of the git object in a PACK file. The purpose is to order and delta-ify entries.

getter is a function to access to the real inflated raw of the git object requested by the hash. This function must allocate the raw (or let the ownership to this function). The algorithm takes the ownership anyway.

tagger is a function to annotate an entry as preferred to serialize firstly.

window corresponds to the number of how many object(s) we keep for the delta-ification or, if memory is true, how many byte(s) we keep for the delta-ification. The client can control the memory consumption of this algorithm precisely if he wants.

depth is the maximum of the delta-ification allowed.

If you want to understand the algorithm, look the source code.

OCaml

Innovation. Community. Security.