Sync.Makemodule X : sig ... endtype db = X.tType type for store handles.
type commit = X.commitThe type for store heads.
The type for remote status.
type info = X.infoThe type for commit info.
val pp_status : status Fmt.tpp_status pretty-prints return statuses.
val fetch :
db ->
?depth:int ->
Irmin__.Remote_intf.t ->
(status, [ `Msg of string ]) Stdlib.result Lwt.tfetch t ?depth r populate the local store t with objects from the remote store r, using t's current branch. The depth parameter limits the history depth. Return `Empty if either the local or remote store do not have a valid head.
Same as fetch but raise Invalid_argument if either the local or remote store do not have a valid head.
The type for pull errors.
val pp_pull_error : pull_error Fmt.tpp_pull_error pretty-prints pull errors.
val pull :
db ->
?depth:int ->
Irmin__.Remote_intf.t ->
[ `Merge of unit -> info | `Set ] ->
(status, pull_error) Stdlib.result Lwt.tpull t ?depth r s is similar to fetch but it also updates t's current branch. s is the update strategy:
`Merge uses Head.merge. Can return a conflict.`Set uses S.Head.set.val pull_exn :
db ->
?depth:int ->
Irmin__.Remote_intf.t ->
[ `Merge of unit -> info | `Set ] ->
status Lwt.tSame as pull but raise Invalid_arg in case of conflict.
val pp_push_error : push_error Fmt.tpp_push_error pretty-prints push errors.
val push :
db ->
?depth:int ->
Irmin__.Remote_intf.t ->
(status, push_error) Stdlib.result Lwt.tpush 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.