Summary 💡
Gitoxide already exposes several useful build profiles, including lean, lean-async, and small. The small profile appears close to a local-operation build, but discovering the correct combination currently requires manually inspecting the feature graph and checking for transport-related crates such as curl, reqwest, HTTP/TLS backends, and network client features.
This is a QoL/documentation request rather than a request to remove networking support.
Would the project be open to adding a clearly named feature preset such as local, local-only, or offline-local that documents the intended way to build Gitoxide for local repository operations only?
For example:
cargo build --no-default-features --features local
Expected behavior:
- preserve local repository operations: object database, refs, index, worktree, pack/revision traversal where applicable
- omit remote operations requiring network transports
- avoid enabling curl, reqwest, HTTP/TLS, git://, SSH, credential-helper, clone/fetch/push client stacks
- provide an easy target for users packaging Gitoxide in constrained, embedded, audited, CI, or minimal-toolchain environments
This would reduce feature-graph reverse engineering for users who want a smaller local tool build, and would make the existing small/local-operation intent easier to discover and validate.
Motivation 🔦
Gitoxide already provides a highly modular feature architecture, but identifying the smallest practical feature set for local repository operations currently requires manual inspection of the feature graph and transitive dependencies.
A documented local/offline build profile would improve:
- Build Simplicity
- Packaging and Distribution
- Depedency Auditing
- CI and Build Performance
- Discoverability
- Scope Clarification
Technically, this is already supported...but requires enumeration of the process up to the user.
EDIT: To clarify, this is especially useful for MSRV-constrained or frozen-toolchain environments, where reducing the feature graph also reduces the chance of unrelated transport/client dependencies forcing newer transitive crates.
Summary 💡
Gitoxide already exposes several useful build profiles, including
lean,lean-async,andsmall. The small profile appears close to a local-operation build, but discovering the correct combination currently requires manually inspecting the feature graph and checking for transport-related crates such as curl, reqwest, HTTP/TLS backends, and network client features.This is a QoL/documentation request rather than a request to remove networking support.
Would the project be open to adding a clearly named feature preset such as local, local-only, or offline-local that documents the intended way to build Gitoxide for local repository operations only?
For example:
cargo build --no-default-features --features localExpected behavior:
This would reduce feature-graph reverse engineering for users who want a smaller local tool build, and would make the existing small/local-operation intent easier to discover and validate.
Motivation 🔦
Gitoxide already provides a highly modular feature architecture, but identifying the smallest practical feature set for local repository operations currently requires manual inspection of the feature graph and transitive dependencies.
A documented local/offline build profile would improve:
Technically, this is already supported...but requires enumeration of the process up to the user.
EDIT: To clarify, this is especially useful for MSRV-constrained or frozen-toolchain environments, where reducing the feature graph also reduces the chance of unrelated transport/client dependencies forcing newer transitive crates.