build: split gix/registry-file features, drop gix facade dependency

Per ADR-012 §4: the gix feature now gates only the engine component
crates (odb/pack/ref/object/fsck); the gix facade crate (client
entry point) is removed — the impls drive components directly
(POC-2's shape). registry-file added as an independent default-on
seam (file-backed registry + record ops, no gitoxide). Both
default-on preserves the batteries-included story; --no-default-
features remains the wire-only embed.

Verification: cargo test (default + --no-default-features), clippy
--all-targets -D warnings, fmt --check.
This commit is contained in:
glm-5.3-flash committed 2026-09-21 16:27:09 +00:00
1 parent addc874667
commit dbb056f451
1 file changed
+9 -5
+9 -5
View File
@@ -14,17 +14,22 @@ name = "alkgit"
path = "src/lib.rs"
[features]
default = ["gix"]
# gitoxide-backed backend implementations (registry, refs, pack gen/ingest).
# Disable for a wire/protocol-only embed with your own backends.
default = ["gix", "registry-file"]
# gitoxide-backed engine implementations (refs, pack gen/ingest). The
# `gix` facade crate is NOT a dependency (ADR-012 §4) — the impls drive
# the component crates directly (POC-2's shape). Disable for a
# wire/protocol-only embed or with your own object-storage backend.
gix = [
"dep:gix",
"dep:gix-odb",
"dep:gix-pack",
"dep:gix-ref",
"dep:gix-object",
"dep:gix-fsck",
]
# File-backed GitRegistry/GitRegistryStore default (per-repo record
# files + in-memory index) + the `git/repo/*` op set (ADR-012 §2–3).
# No gitoxide. Disable to bring your own registry backend.
registry-file = []
# sha256 passthrough (untested end-to-end; sha1 is pinned by default — OQ-05).
# gix-hash stays always-on with sha1: the wire layer needs it, and gix-hash
# fails to compile with neither hash feature selected (compile-time-rejected
@@ -33,7 +38,6 @@ sha256 = ["gix-hash/sha256"]
[dependencies]
alkcall = "0.8"
gix = { version = "0.87", optional = true, default-features = false, features = ["sha1"] }
gix-odb = { version = "0.84", optional = true, default-features = false, features = ["sha1"] }
gix-pack = { version = "0.74", optional = true, features = ["sha1"] }
gix-ref = { version = "0.67", optional = true }