Skip to content

Add a local build profile for offline/local-only builds#2679

Open
Amey Pawar (ameyypawar) wants to merge 2 commits into
GitoxideLabs:mainfrom
ameyypawar:feat/2672-local-profile
Open

Add a local build profile for offline/local-only builds#2679
Amey Pawar (ameyypawar) wants to merge 2 commits into
GitoxideLabs:mainfrom
ameyypawar:feat/2672-local-profile

Conversation

@ameyypawar

Copy link
Copy Markdown
Contributor

What

For #2672 — a documented build profile for local-only operation, so packagers don't have to reverse-engineer the feature graph to get there.

Background

small is already local-only (it has no clone), but it's size-optimized and single-threaded; max-pure is pure-Rust but networked. There was no fast, pure-Rust, local-only profile — which is the gap this fills.

The local profile

It's lean minus the HTTP/SSH client stack and the SQLite-backed query/corpus tools:

local = ["hashes", "fast", "tracing", "pretty-cli", "gitoxide-core-tools", "prodash-render-line"]
  • Keeps local repository operations, the local ein tools (organize/estimate-hours/archive/clean), and parallelism.
  • No clone/fetch/push; pulls in none of curl/reqwest/TLS, and needs no C toolchain (no bundled SQLite) — verified via cargo tree -e build,normal (no cc/cmake/-sys anywhere).
  • The pure-Rust transport abstraction crates stay linked, but no networked command is exposed.

Also adds cargo check --no-default-features --features local to the justfile check recipe, next to the other presets. No new crates enter Cargo.lock.

Verification

Builds; cargo clippy --workspace --no-default-features --features local is clean; gix status/clean work; gix clone is absent.

Open questions — this is a proposal

You own this feature architecture, so I'm not attached to the specifics:

  • Namelocal, or offline / local-only?
  • Feature set — I kept the local ein tools and tracing; happy to trim toward a more minimal, small-like core, or to expand it, whichever you prefer.
  • Or, if you'd rather simply document that small is the local build rather than add a profile at all, I'm glad to redo it that way instead.

For GitoxideLabs#2672. `small` is already local-only but size-optimized and
single-threaded, and `max-pure` is pure-Rust but networked; there was no
fast, pure-Rust, local-only profile. `local` is `lean` without the HTTP/SSH
client stack and without the SQLite-backed `query`/`corpus` tools, so it
keeps local operations, the local `ein` tools and parallelism while the
dependency graph stays entirely Rust -- no curl/reqwest/TLS backend and no
C toolchain. There is no `clone`, `fetch` or `push`.

Gives packagers in constrained, audited or minimal-toolchain environments a
documented target instead of reverse-engineering the feature graph.
Keeps the new local-only profile building alongside the other presets.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

#!/usr/bin/env -S just --justfile

P2 Badge Restore the justfile executable bit

This commit changes justfile from mode 100755 to 100644 while keeping the shebang that is meant to support invocations like ./justfile test. On Unix systems, any local or scripted workflow that executes the justfile directly will now fail with Permission denied even though the file contents still advertise that usage; keep the executable bit when adding the new local check.

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "Codex (@codex) review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "Codex (@codex) address that feedback".

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant