Irmin, a distributed database that follows the same design principles as Git
Module Irmin . Of_backend . Branch

Branch Store

Manipulate relations between branches and commits.

val mem : repo -> branch -> bool Lwt.t

mem r b is true iff b is present in r.

val find : repo -> branch -> commit option Lwt.t

find r b is Some c iff c is bound to b in t. It is None if b is not present in t.

val get : repo -> branch -> commit Lwt.t

get t b is similar to find but raise Invalid_argument if b is not present in t.

val set : repo -> branch -> commit -> unit Lwt.t

set t b c bounds c to b in t.

val remove : repo -> branch -> unit Lwt.t

remove t b removes b from t.

val list : repo -> branch list Lwt.t

list t is the list of branches present in t.

val watch : repo -> branch -> ?init:commit -> ( commit Diff.t -> unit Lwt.t ) -> watch Lwt.t

watch t b f calls f on every change in b.

val watch_all : repo -> ?init:(branch * commit) list -> ( branch -> commit Diff.t -> unit Lwt.t ) -> watch Lwt.t

watch_all t f calls f on every branch-related change in t, including creation/deletion events.

Base functions for branches.

include Branch.S with type t = branch

Signature for Branches

type t = branch

The type for branches.

val t : t Type.t
val main : t

The name of the main branch.

val is_valid : t -> bool

Check if the branch is valid.