Skip to content

Add a documented local/offline build profile for Gitoxide CLI QoL #2672

Description

@volt317

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:

  1. Build Simplicity
  2. Packaging and Distribution
  3. Depedency Auditing
  4. CI and Build Performance
  5. Discoverability
  6. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requesthelp wantedExtra attention is needed

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions