sig   type repo   type branch   val init : ?root:string -> ?bare:bool -> unit -> Ezirmin.Repo.repo Lwt.t   val master : Ezirmin.Repo.repo -> Ezirmin.Repo.branch Lwt.t   val get_branch :     Ezirmin.Repo.repo -> branch_name:string -> Ezirmin.Repo.branch Lwt.t   val get_branch_name : Ezirmin.Repo.branch -> string option Lwt.t   val clone_force :     Ezirmin.Repo.branch -> string -> Ezirmin.Repo.branch Lwt.t   val merge : Ezirmin.Repo.branch -> into:Ezirmin.Repo.branch -> unit Lwt.t   val predecessors :     Ezirmin.Repo.repo ->     Ezirmin.Repo.branch -> Ezirmin.Repo.branch list Lwt.t   val update_branch :     Ezirmin.Repo.branch -> set:Ezirmin.Repo.branch -> unit Lwt.t   module Commit :     sig       type t       val commit_of_branch :         Ezirmin.Repo.branch -> Ezirmin.Repo.Commit.t option Lwt.t       val branch_of_commit :         Ezirmin.Repo.repo ->         Ezirmin.Repo.Commit.t -> Ezirmin.Repo.branch Lwt.t       val predecessors : Ezirmin.Repo.Commit.t -> Ezirmin.Repo.Commit.t list       val compare_and_update_branch :         Ezirmin.Repo.branch ->         expect:Ezirmin.Repo.Commit.t option ->         update:Ezirmin.Repo.Commit.t option -> bool Lwt.t     end   val install_listener : unit -> unit   module Sync :     sig       type remote       val remote_uri : string -> Ezirmin.Repo.Sync.remote       val pull :         Ezirmin.Repo.Sync.remote ->         Ezirmin.Repo.branch ->         [ `Merge | `Update ] ->         [ `Conflict of string | `Error | `No_head | `Ok ] Lwt.t       val push :         Ezirmin.Repo.Sync.remote ->         Ezirmin.Repo.branch -> [ `Error | `Ok ] Lwt.t     end   module Store : Irmin.S end