Cargo Features

gitoxide-core has no features set by default.

[dependencies]
gitoxide-core = { version = "0.42.0", features = ["organize", "estimate-hours", "query", "corpus", "archive", "clean", "blocking-client", "async-client", "serde", "document-features"] }
organize corpus?

Tools

Discover all git repositories within a directory. Particularly useful with skim.

Enables gix-url and jwalk

gix-url:

for 'organize' functionality

Affects gitoxide-core::organize

estimate-hours

Derive the amount of time invested into a git repository akin to git-hours.

Enables crossbeam-channel, fs-err ^2.6.0, and smallvec

fs-err:

for 'hours'

Affects gitoxide-core::hours

query

Gather information about repositories and store it in a database for easy querying.

Enables rusqlite

for 'query' and 'corpus'

Affects gitoxide-core::query

corpus = organize, tracing

Run algorithms on a corpus of repositories and store their results for later comparison and intelligence gathering. Note that organize we need for finding git repositories fast.

Enables crossbeam-channel, parking_lot, rusqlite, serde_json, sysinfo ^0.31.2, tracing-forest, and tracing-subscriber

parking_lot:

for 'corpus'

Affects gitoxide-core::corpus

archive

The ability to create archives from virtual worktrees, similar to git archive.

Enables gix-archive and worktree-archive of gix

deselect everything else (like "performance") as this should be controllable by the parent application.

Affects repository::archive

clean

The ability to clean a repository, similar to git clean.

Enables gix

Affects repository::clean

blocking-client

Mutually Exclusive Networking

If both are set, blocking-client will take precedence, allowing --all-features to be used.

If set, the client used to connect to git servers will use a blocking API. It supports more transports and is what most would want.

Enables blocking-network-client of gix

Affects repository::clone, repository::fetch, pack::receive

async-client = async-io, async-net, async-trait, blocking, futures-io, futures-lite

The client to connect to git servers will be async, while supporting only the 'git' transport itself.
It's the most limited and can be seen as example on how to use custom transports for custom servers.

Enables async-network-client-async-std of gix, async-std of gix-transport

Affects pack::receive

serde

Other

Data structures implement serde::Serialize and serde::Deserialize.

Enables serde and serde_json, serde of bytesize and gix

Features from optional dependencies

In crates that don't use the dep: syntax, optional dependencies automatically become Cargo features. These features may have been created by mistake, and this functionality may be removed in the future.

async-trait async-client?

Enables async-trait

for async-client

async-net async-client?
futures-lite async-client?
async-io async-client?
futures-io async-client?
blocking async-client?
tracing corpus?
document-features implicit feature

Enables document-features

document-features:

Extract documentation for the feature flags from comments in Cargo.toml