Smart_git
module type APPEND = sig ... end
module type UID = sig ... end
module type HTTP = sig ... end
module Endpoint : sig ... end
When 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