Implementation of the Git protocol in pure OCaml


Common signatures to all objects

module type S = sig ... end

General functions.

module type Set = sig ... end

Extended sets

module type Map = sig ... end

Extended maps

module type IO = sig ... end

Base objects

module Hash : sig ... end


module Blob : sig ... end

Binary blobs

module Tree : sig ... end

Filesystem trees.

module User : sig ... end

User actions.

module Commit : sig ... end


module Object_type : sig ... end

Object types.

module Tag : sig ... end

Annotated tags.

module Reference : sig ... end


module Inflate : sig ... end

Zlib Compression.

module Value : sig ... end

Git values

Pack objects

module Pack_index : sig ... end

Pack indexes.

module Packed_value : sig ... end

Packed values.

module Pack : sig ... end

Pack files.

module Packed_refs : sig ... end

Packed references.

module Index : sig ... end

Implementation of the V2 Git Index format (as V1 is deprecated).

Git Stores

module Store : sig ... end

General signature for Git stores.

Wire protocol

module Gri : sig ... end

Git ressource identifiers (GRI).

module Sync : sig ... end

Clone/Fecth/Push protocol

module Mem : sig ... end

Store Git objects in memory.

module FS : sig ... end

Store Git objects on the local filesystem.

Higher level read-only functions

Search over the graph of Git objects.

module Graph : sig ... end

Functions to manipulate the graph of Git objects.