Smart_gitmodule type APPEND = sig ... endmodule type UID = sig ... endmodule type HTTP = sig ... endmodule Endpoint : sig ... endWhen the user use an Endpoint.t to Make.fetch or Make.push, we fill the given Mimic's ctx with some available informations such as:
Make.fetch (`Rd) or Make.push (`Wr)git://, SSH or HTTP - with or without TLS)From this informations, the end-user can process them through the Mimic API (with Mimic.fold) and describe how to create needed values to start a protocol from them.
For example, if the user wants to use mirage-tcpip which needs an IP address and a port, he is able to re-use/map/fold git_host and git_port to craft what mirage-tcpip really needs.
Of course, such job is definitely outside the scope of ocaml-git and permits to us to be free about protocol implementations. An example of the plumbing needed is able with git-mirage which re-use these values to be able to start a mirage-tcpip connection, a awa-ssh connection of a cohttp (with or without ocaml-tls) connection.
val git_transmission : 
  [ `Git | `Exec | `HTTP of Uri.t * handshake ] Mimic.value