gix-protocol 0.46.1

A crate of the gitoxide project for implementing git protocols
Documentation
lints.workspace = true

[package]
name = "gix-protocol"
version = "0.46.1"
repository = "https://github.com/GitoxideLabs/gitoxide"
license = "MIT OR Apache-2.0"
description = "A crate of the gitoxide project for implementing git protocols"
authors = ["Sebastian Thiel <sebastian.thiel@icloud.com>"]
edition = "2021"
include = ["src/**/*", "LICENSE-*", "!**/tests/**/*"]
rust-version = "1.65"

[lib]
doctest = false

[features]

#! ### _Mutually exclusive client _
#! The _client_ portion of the protocol uses `gix-transport` to communicate to a server. For it to be available, one of the following features must
#! be selected.
#!
#! Specifying both causes a compile error, preventing the use of `--all-features`.

## If set, blocking command implementations are available and will use the blocking version of the `gix-transport` crate.
blocking-client = ["gix-transport/blocking-client", "maybe-async/is_sync"]
## As above, but provides async implementations instead.
async-client = [
    "gix-transport/async-client",
    "async-trait",
    "futures-io",
    "futures-lite",
]

#! ### Other
## Data structures implement `serde::Serialize` and `serde::Deserialize`.
serde = ["dep:serde", "bstr/serde", "gix-transport/serde", "gix-hash/serde"]

[[test]]
name = "blocking-client-protocol"
path = "tests/blocking-protocol.rs"
required-features = ["blocking-client"]

[[test]]
name = "async-client-protocol"
path = "tests/async-protocol.rs"
required-features = ["async-client"]

[dependencies]
gix-features = { version = "^0.39.1", path = "../gix-features", features = [
    "progress",
] }
gix-transport = { version = "^0.43.1", path = "../gix-transport" }
gix-hash = { version = "^0.15.1", path = "../gix-hash" }
gix-date = { version = "^0.9.2", path = "../gix-date" }
gix-credentials = { version = "^0.25.1", path = "../gix-credentials" }
gix-utils = { version = "^0.1.13", path = "../gix-utils" }

thiserror = "2.0.0"
serde = { version = "1.0.114", optional = true, default-features = false, features = [
    "derive",
] }
bstr = { version = "1.3.0", default-features = false, features = [
    "std",
    "unicode",
] }
winnow = { version = "0.6", features = ["simd"] }

# for async-client
async-trait = { version = "0.1.51", optional = true }
futures-io = { version = "0.3.16", optional = true }
futures-lite = { version = "2.1.0", optional = true }
maybe-async = "0.2.6"

document-features = { version = "0.2.0", optional = true }

[dev-dependencies]
async-std = { version = "1.9.0", features = ["attributes"] }
gix-packetline = { path = "../gix-packetline", version = "^0.18.1" }
gix-testtools = { path = "../tests/tools" }

[package.metadata.docs.rs]
features = ["blocking-client", "document-features", "serde"]