functor (C : Rope_content->   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 t     type atom = C.atom     type content = C.t     val create : unit -> t Lwt.t     val make : content -> t Lwt.t     val flush : t -> content Lwt.t     val is_empty : t -> bool Lwt.t     val length : t -> int Lwt.t     val set : t -> pos:int -> atom -> t Lwt.t     val get : t -> pos:int -> atom Lwt.t     val insert : t -> pos:int -> content -> t Lwt.t     val delete : t -> pos:int -> len:int -> t Lwt.t     val append : t -> t -> t Lwt.t     val concat : sep:t -> t list -> t Lwt.t     val split : t -> pos:int -> (t * t) Lwt.t     val write :       ?message:string -> branch -> path:string list -> t -> unit Lwt.t     val read : branch -> path:string list -> t option Lwt.t   end