Irmin, a distributed database that follows the same design principles as Git
Module Irmin . Commit
module type S = sig ... end
module type Maker = sig ... end
module Maker (I : Info.S) : Maker with module Info = I

Maker provides a simple implementation of commit values, parameterized by commit info.

module Generic_key : sig ... end

Generic_key generalises the concept of "commit" to one that supports object keys that are not strictly equal to hashes.

module V1 : sig ... end

V1 serialisation.

module Portable : sig ... end

Portable form of a commit implementation that can be constructed from a concrete representation and used in computing hashes. Conceptually, a Commit.Portable.t is a Commit.t in which all internal keys have been replaced with the hashes of the values they point to.

module type Store = sig ... end

Store specifies the signature for commit stores.

module Store (I : Info.S) (N : Node.Store) (S : Content_addressable.S with type key = N.key) (H : Hash.S with type t = S.key) (V : S with type hash = S.key and type t = S.value and module Info := I) : Store with type 'a t = 'a N.t * 'a S.t and type key = S.key and type hash = S.key and type value = S.value and module Info = I and module Val = V

Store creates a new commit store.

module type History = sig ... end

History specifies the signature for commit history. The history is represented as a partial-order of commits and basic functions to search through that history are provided.

module History (C : Store) : History with type 'a t = 'a C.t and type v = C.Val.t and type node_key = C.Node.key and type commit_key = C.key and type info = C.Info.t

Build a commit history.

include Maker with module Info = Info.Default
module Info = Info.Default
module Make (H : Type.S) : sig ... end