functor (V : Tc.S0->   sig     type repo     type branch     val init : ?root:string -> ?bare:bool -> unit -> repo Lwt.t     val master : repo -> branch Lwt.t     val get_branch : repo -> branch_name:string -> branch Lwt.t     val get_branch_name : branch -> string option Lwt.t     val clone_force : branch -> string -> branch Lwt.t     val merge : branch -> into:branch -> unit Lwt.t     val predecessors : repo -> branch -> branch list Lwt.t     val update_branch : branch -> set:branch -> unit Lwt.t     module Commit :       sig         type t         val commit_of_branch : branch -> t option Lwt.t         val branch_of_commit : repo -> t -> branch Lwt.t         val predecessors : t -> t list         val compare_and_update_branch :           branch -> expect:t option -> update:t option -> bool Lwt.t       end     val install_listener : unit -> unit     module Sync :       sig         type remote         val remote_uri : string -> remote         val pull :           remote ->           branch ->           [ `Merge | `Update ] ->           [ `Conflict of string | `Error | `No_head | `Ok ] Lwt.t         val push : remote -> branch -> [ `Error | `Ok ] Lwt.t       end     module Store : Irmin.S     type elt = V.t     type cursor     val append :       ?message:string -> branch -> path:string list -> elt -> unit Lwt.t     val get_cursor : branch -> path:string list -> cursor option Lwt.t     val read : cursor -> num_items:int -> (elt list * cursor option) Lwt.t     val read_all : branch -> path:string list -> elt list Lwt.t     val at_time : cursor -> Ptime.t option     val is_earlier : cursor -> than:cursor -> bool option     val is_later : cursor -> than:cursor -> bool option     val watch :       branch ->       path:string list -> (elt -> unit Lwt.t) -> (unit -> unit Lwt.t) Lwt.t   end