package irmin

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

SYNC provides functions to synchronization an Irmin store with local and remote Irmin stores.

Native Synchronization

type db

Type type for store handles.

type commit

The type for store heads.

type fetch_error = [
  1. | `No_head
  2. | `Not_available
  3. | `Msg of string
]

The type for fetch errors.

val pp_fetch_error : fetch_error Fmt.t

pp_fetch_error pretty prints fetch errors.

val fetch : db -> ?depth:int -> remote -> (commit, fetch_error) Result.result Lwt.t

fetch t ?depth r populate the local store t with objects for the remote store r, using t's current branch. The depth parameter limits the history depth. Return None if either the local or remote store do not have a valid head.

val fetch_exn : db -> ?depth:int -> remote -> commit Lwt.t

Same as fetch but raise Invalid_argument if either the local or remote store do not have a valid head.

val pull : db -> ?depth:int -> remote -> [ `Merge of Info.f | `Set ] -> (unit, [ fetch_error | Merge.conflict ]) Result.result Lwt.t

pull t ?depth r s is similar to fetch but it also updates t's current branch. s is the update strategy:

  • `Merge uses S.Head.merge. Can return a conflict.
  • `Set uses S.Head.set.
val pull_exn : db -> ?depth:int -> remote -> [ `Merge of Info.f | `Set ] -> unit Lwt.t

Same as pull but raise Invalid_arg in case of conflict.

type push_error = [
  1. | fetch_error
  2. | `Detached_head
]

The type for push errors.

val pp_push_error : push_error Fmt.t

pp_push_error pretty-prints push errors.

val push : db -> ?depth:int -> remote -> (unit, push_error) Result.result Lwt.t

push t ?depth r populates the remote store r with objects from the current store t, using t's current branch. If b is t's current branch, push also updates the head of b in r to be the same as in t.

Note: Git semantics is to update b only if the new head if more recent. This is not the case in Irmin.

val push_exn : db -> ?depth:int -> remote -> unit Lwt.t

Same as push but raise Invalid_argument if an error happens.