Crate git_transport

source ·
Expand description

An implementation of the git transport layer, abstracting over all of its versions, providing connect() to establish a connection given a repository URL.

All git transports are supported, including ssh, git, http and https, as well as local repository paths.

Feature Flags

Mutually Exclusive Client

The client portion of transport can be blocking or async. If none is selected, it will be missing entirely. Specifying both causes a compile error, preventing the use of --all-features.

  • blocking-client — If set, blocking implementations of the typical git transports become available in crate::client

  • http-client — Implies blocking-client, and adds support for the http and https transports.

  • http-client-curl — Implies http-client, and adds support for the http and https transports using the Rust bindings for libcurl.

  • async-client — If set, an async implementations of the git transports becomes available in crate::client. Suitable for implementing your own transports while using git’s way of communication, typically in conjunction with a custom server. Note that the blocking client has a wide range of available transports, with the async version of it supporting only the TCP based git transport leaving you with the responsibility to providing such an implementation of futures-io::AsyncRead/AsyncWrite yourself.


  • serde1 — Data structures implement serde::Serialize and serde::Deserialize.

  • async-std — If used in conjunction with async-client, the connect() method will become available along with supporting the git protocol over TCP, where the TCP stream is created using this crate.


pub use bstr;
pub use git_packetline as packetline;




The version of the way client and server communicate.
The kind of service to invoke on the client or the server side.


An error which can tell whether it’s worth retrying to maybe succeed next time.


connectblocking-client and (blocking-client, or async-client and async-std)
A general purpose connector connecting to a repository identified by the given url.