git-ents.gitmain
⌘K
foforge
commit 8af6a1e
refactor: rename git-reachability to gix-reachability

Gitoxide extensions take the gix-* prefix; this crate fills gix’s read-only gaps (commit-graph and reachable-set writing) with no git-ents semantics, unlike the other git-* crates.

Assisted-by: Claude:claude-fable-5

Joseph D. Carpinelli · 1 month ago

Reviews

No reviews of this commit yet — record a verdict below.

Start a review

verdict

Cargo.lock @@ -572,10 +572,10 @@ dependencies = [ "git-backend", "git-protocol", - "git-reachability", "git-store", "gix-hash", "gix-object", + "gix-reachability", "odb-files", "refstore-files", "tempfile", @@ -1628,10 +1628,10 @@ "git-ents-core", "git-member", "git-protocol", - "git-reachability", "git-store", "gix-hash", "gix-object", + "gix-reachability", "odb-files", "refstore-files", "tempfile", @@ -1725,7 +1725,6 @@ "git-maintenance", "git-member", "git-protocol", - "git-reachability", "git-signed-push", "git-store", "git-toolchain", @@ -1733,6 +1732,7 @@ "gix-date", "gix-hash", "gix-object", + "gix-reachability", "maud", "odb-files", "odb-tigris", @@ -1755,9 +1755,9 @@ "git-ents-core", "git-member", "git-protocol", - "git-reachability", "gix-hash", "gix-object", + "gix-reachability", "odb-files", "odb-tigris", "refstore-files", @@ -1774,11 +1774,11 @@ "effect-dispatcher", "git-backend", "git-protocol", - "git-reachability", "git-store", "gix-hash", "gix-object", "gix-pack", + "gix-reachability", "odb-files", "odb-tigris", "refstore-files", @@ -1808,7 +1808,6 @@ "git-backend", "git-ents-core", "git-member", - "git-reachability", "git-signed-push", "gix", "gix-actor", @@ -1817,6 +1816,7 @@ "gix-hash", "gix-object", "gix-pack", + "gix-reachability", "odb-files", "refstore-files", "rstest", @@ -1824,22 +1824,6 @@ "thiserror 2.0.18", ] -[[package]] -name = "git-reachability" -version = "0.0.0" -dependencies = [ - "git-backend", - "gix-actor", - "gix-date", - "gix-hash", - "gix-object", - "odb-files", - "odb-tigris", - "refstore-files", - "tempfile", - "thiserror 2.0.18", -] - [[package]] name = "git-signed-push" version = "0.0.0" @@ -2506,6 +2490,22 @@ "gix-utils", ] +[[package]] +name = "gix-reachability" +version = "0.0.0" +dependencies = [ + "git-backend", + "gix-actor", + "gix-date", + "gix-hash", + "gix-object", + "odb-files", + "odb-tigris", + "refstore-files", + "tempfile", + "thiserror 2.0.18", +] + [[package]] name = "gix-ref" version = "0.64.0"
Cargo.toml @@ -16,10 +16,10 @@ "crates/git-maintenance", "crates/git-member", "crates/git-protocol", - "crates/git-reachability", "crates/git-signed-push", "crates/git-store", "crates/git-toolchain", + "crates/gix-reachability", "crates/odb-baked", "crates/odb-files", "crates/odb-tiered", @@ -83,10 +83,10 @@ git-maintenance = { path = "crates/git-maintenance" } git-member = { path = "crates/git-member" } git-protocol = { path = "crates/git-protocol" } -git-reachability = { path = "crates/git-reachability" } git-signed-push = { path = "crates/git-signed-push" } git-store = { path = "crates/git-store" } git-toolchain = { path = "crates/git-toolchain" } +gix-reachability = { path = "crates/gix-reachability" } odb-baked = { path = "crates/odb-baked" } odb-files = { path = "crates/odb-files" } odb-tiered = { path = "crates/odb-tiered" }
crates/backend-conformance/Cargo.toml @@ -8,7 +8,7 @@ [dependencies] git-backend = { workspace = true } git-protocol = { workspace = true } -git-reachability = { workspace = true } +gix-reachability = { workspace = true } git-store = { workspace = true, features = ["test-support"] } gix-hash = { workspace = true } gix-object = { workspace = true }
crates/git-cache-proxy/Cargo.toml @@ -11,7 +11,7 @@ git-ents-core = { workspace = true } git-member = { workspace = true } git-protocol = { workspace = true } -git-reachability = { workspace = true } +gix-reachability = { workspace = true } git-store = { workspace = true } gix-hash = { workspace = true } gix-object = { workspace = true }
crates/git-ents-server/Cargo.toml @@ -26,7 +26,7 @@ git-maintenance = { workspace = true } git-member = { workspace = true } git-protocol = { workspace = true } -git-reachability = { workspace = true } +gix-reachability = { workspace = true } git-signed-push = { workspace = true } git-store = { workspace = true } git-toolchain = { workspace = true }
crates/git-hydrate/Cargo.toml @@ -10,7 +10,7 @@ git-ents-core = { workspace = true } git-member = { workspace = true } git-protocol = { workspace = true } -git-reachability = { workspace = true } +gix-reachability = { workspace = true } gix-hash = { workspace = true } gix-object = { workspace = true } odb-tigris = { workspace = true }
crates/git-maintenance/Cargo.toml @@ -10,7 +10,7 @@ effect-dispatcher = { workspace = true } git-backend = { workspace = true } git-protocol = { workspace = true } -git-reachability = { workspace = true } +gix-reachability = { workspace = true } gix-hash = { workspace = true } gix-object = { workspace = true } gix-pack = { workspace = true }
crates/git-protocol/Cargo.toml @@ -9,7 +9,7 @@ git-backend = { workspace = true } git-ents-core = { workspace = true } git-member = { workspace = true } -git-reachability = { workspace = true } +gix-reachability = { workspace = true } git-signed-push = { workspace = true } gix = { workspace = true } gix-actor = { workspace = true }
crates/backend-conformance/src/corpus.rs @@ -62,7 +62,7 @@ } /// The set of every object reachable from `refs`' current tips over -/// `objects` — a thin wrapper over [`git_reachability::gc_mark`] (no +/// `objects` — a thin wrapper over [`gix_reachability::gc_mark`] (no /// reachability artifacts, so a plain walk) for a replay test to compare /// between the original backend and the one it replayed a corpus into. /// @@ -73,8 +73,8 @@ pub fn reachable_object_set( refs: &dyn RefStore, objects: &dyn ObjectStore, -) -> git_reachability::Result<BTreeSet<ObjectId>> { - git_reachability::gc_mark(refs, objects, &git_reachability::ArtifactBundle::empty()) +) -> gix_reachability::Result<BTreeSet<ObjectId>> { + gix_reachability::gc_mark(refs, objects, &gix_reachability::ArtifactBundle::empty()) } #[cfg(test)]
crates/git-cache-proxy/src/lib.rs @@ -251,7 +251,7 @@ // reachability artifacts is future work, same caveat // `DiskResolver` in `git-ents-server` carries (absence // degrades speed, never answers). - reachability: git_reachability::ArtifactBundle::empty(), + reachability: gix_reachability::ArtifactBundle::empty(), }) } }
crates/git-ents-server/src/native_git.rs @@ -75,13 +75,13 @@ authorized_members: git_member::members::without_revoked(members, &revoked), config, // No reachability artifacts for the disk-hydrated backend yet: - // `git-reachability`'s maintenance effect and artifact storage + // `gix-reachability`'s maintenance effect and artifact storage // target the cloud stack (`odb-tigris` + its pack registry); // wiring generation/loading for this resolver is future work, // and negotiation/ingest degrade to the plain walk in the // meantime (`docs/scale-out.adoc`: "absence ... degrades // speed, never answers"). - reachability: git_reachability::ArtifactBundle::empty(), + reachability: gix_reachability::ArtifactBundle::empty(), }) } }
crates/git-ents-server/tests/hydrate.rs @@ -281,8 +281,8 @@ .unwrap() .map(|entry| entry.unwrap().1) .collect(); - let source = git_reachability::walk::StoreSource::new(objects); - git_reachability::walk::reachable(roots, &source, |_id| false, false).unwrap() + let source = gix_reachability::walk::StoreSource::new(objects); + gix_reachability::walk::reachable(roots, &source, |_id| false, false).unwrap() } fn keygen(base: &Path, name: &str) -> PathBuf {
crates/git-hydrate/src/resolver.rs @@ -83,7 +83,7 @@ // No reachability artifacts wired for this resolver yet (same // gap `DiskResolver` documents): negotiation/ingest degrade to // the plain walk, never a wrong answer. - reachability: git_reachability::ArtifactBundle::empty(), + reachability: gix_reachability::ArtifactBundle::empty(), }) } }
crates/git-maintenance/src/gc.rs @@ -3,7 +3,7 @@ //! //! # Mark //! -//! [`collect`] marks with [`git_reachability::gc_mark`] — every object +//! [`collect`] marks with [`gix_reachability::gc_mark`] — every object //! reachable from every current ref tip, accelerated by whatever //! reachability artifacts the repo has (absence degrades speed, never //! answers). A second, durable-tips-only walk splits the marked set into @@ -48,8 +48,8 @@ use git_backend::cache_ns; use git_backend::{ObjectStore, RefName, RefStore}; -use git_reachability::walk::StoreSource; use gix_hash::ObjectId; +use gix_reachability::walk::StoreSource; use odb_tigris::pack_writer::{ClassifiedObject, LifetimeClass, index_pack, partition_and_pack}; use odb_tigris::registry::{PackId, PackRecord, PackRegistry}; use odb_tigris::transport::BlobTransport; @@ -82,9 +82,9 @@ transport: &dyn BlobTransport, registry: &dyn PackRegistry, ) -> Result<GcOutcome> { - let artifacts = git_reachability::store::load_bundle(transport, registry, repo_id) + let artifacts = gix_reachability::store::load_bundle(transport, registry, repo_id) .map_err(|error| Error::ObjectStore(error.to_string()))?; - let marked = git_reachability::gc_mark(refs, objects, &artifacts) + let marked = gix_reachability::gc_mark(refs, objects, &artifacts) .map_err(|error| Error::ObjectStore(error.to_string()))?; let durable = durable_reachable(refs, objects, &artifacts)?; @@ -137,7 +137,7 @@ fn durable_reachable( refs: &dyn RefStore, objects: &dyn ObjectStore, - artifacts: &git_reachability::ArtifactBundle, + artifacts: &gix_reachability::ArtifactBundle, ) -> Result<BTreeSet<ObjectId>> { let tips = refs .iter_prefix(&RefName::new("refs/"))? @@ -148,7 +148,7 @@ .map(|entry| entry.map(|(_name, oid)| oid)) .collect::<git_backend::Result<Vec<ObjectId>>>()?; let source = StoreSource::new(objects); - git_reachability::accelerated_reachable(tips, &source, |_id| false, false, artifacts) + gix_reachability::accelerated_reachable(tips, &source, |_id| false, false, artifacts) .map_err(|error| Error::ObjectStore(error.to_string())) } @@ -273,7 +273,7 @@ let refs = refstore_files::FilesRefStore::open(repo)?; let objects = odb_files::OdbFiles::open(repo)?; let marked = - git_reachability::gc_mark(&refs, &objects, &git_reachability::ArtifactBundle::empty()) + gix_reachability::gc_mark(&refs, &objects, &gix_reachability::ArtifactBundle::empty()) .map_err(|error| Error::ObjectStore(error.to_string()))?; let pack_dir = repo.join("objects").join("pack");
crates/git-maintenance/src/lib.rs @@ -9,7 +9,7 @@ //! //! The pieces, one module each: //! -//! - [`gc`] — mark ([`git_reachability::gc_mark`], artifacts as +//! - [`gc`] — mark ([`gix_reachability::gc_mark`], artifacts as //! accelerator) and sweep (over the pack registry, never a bucket //! listing and *structurally* never quarantine — see the module doc). //! - [`cache`] — TTL eviction of cache refs and the consolidation effect, @@ -21,7 +21,7 @@ //! - [`schedule`] — the maintenance [`git_backend::EffectDef`]s and the //! [`schedule::Scheduler`] a server calls post-ingest to enqueue them on //! ref-update volume thresholds (including reachability regeneration via -//! [`git_reachability::maintenance::should_regenerate`], the trigger WS6 +//! [`gix_reachability::maintenance::should_regenerate`], the trigger WS6 //! left for this crate to schedule). //! - [`collector`] — real [`backend_conformance::Collector`]s over the //! files and Tigris backends, closing the seam WS2 left open: the
crates/git-maintenance/src/schedule.rs @@ -3,7 +3,7 @@ //! ref-update volume thresholds"). //! //! The maintenance effects — GC, cache TTL, consolidation, and -//! reachability regeneration ([`git_reachability::maintenance`], whose +//! reachability regeneration ([`gix_reachability::maintenance`], whose //! scheduling WS6 explicitly deferred here) — are defined as //! [`EffectDef`]s and enqueued by [`schedule_maintenance`] whenever a //! repo's accumulated ref-update volume crosses its threshold. The @@ -17,7 +17,7 @@ //! rows are the schedule, and the runner executes the bodies //! ([`crate::gc::collect`], [`crate::cache::evict_expired`], //! [`crate::cache::consolidate`], -//! [`git_reachability::maintenance::regenerate`]) under the per-repo +//! [`gix_reachability::maintenance::regenerate`]) under the per-repo //! advisory lock ([`crate::lock`]). use std::collections::{BTreeMap, HashMap}; @@ -38,7 +38,7 @@ /// The static [`EffectDef`] for one in-process maintenance effect — /// `command`/`image` `None`, mirroring -/// [`git_reachability::maintenance::definition`]. +/// [`gix_reachability::maintenance::definition`]. fn definition(name: &str) -> EffectDef { EffectDef { name: name.to_owned(), @@ -49,7 +49,7 @@ /// The ref-update volume thresholds that trigger maintenance. Two knobs /// because reachability regeneration has its own trigger predicate -/// ([`git_reachability::maintenance::should_regenerate`]) and may +/// ([`gix_reachability::maintenance::should_regenerate`]) and may /// reasonably fire less often than repack. #[derive(Debug, Clone, Copy, PartialEq, Eq)] pub struct Thresholds { @@ -57,7 +57,7 @@ /// enqueued. pub maintenance: u64, /// Ref updates before reachability regeneration rides along - /// ([`git_reachability::maintenance::should_regenerate`]). + /// ([`gix_reachability::maintenance::should_regenerate`]). pub reachability: u64, } @@ -92,7 +92,7 @@ /// Enqueue `repo_id`'s maintenance effects into `sink` if `stats` crosses /// `thresholds.maintenance` — GC, cache TTL, consolidation, plus /// reachability regeneration when -/// [`git_reachability::maintenance::should_regenerate`] says the volume +/// [`gix_reachability::maintenance::should_regenerate`] says the volume /// also warrants that. Returns what was enqueued (empty below threshold). /// /// # Errors @@ -114,11 +114,11 @@ definition(CACHE_TTL_EFFECT), definition(CONSOLIDATION_EFFECT), ]; - if git_reachability::maintenance::should_regenerate( + if gix_reachability::maintenance::should_regenerate( stats.ref_updates_since_last, thresholds.reachability, ) { - effects.push(git_reachability::maintenance::definition()); + effects.push(gix_reachability::maintenance::definition()); } sink.enqueue(repo_id, &effects)?; Ok(effects)
crates/git-maintenance/tests/lock_and_schedule.rs @@ -116,7 +116,7 @@ git_maintenance::schedule::GC_EFFECT, git_maintenance::schedule::CACHE_TTL_EFFECT, git_maintenance::schedule::CONSOLIDATION_EFFECT, - git_reachability::maintenance::EFFECT_NAME, + gix_reachability::maintenance::EFFECT_NAME, ] ); let enqueued = sink.enqueued.lock().unwrap();
crates/git-protocol/src/lib.rs @@ -43,12 +43,12 @@ /// the promoted object store could resolve. #[error("missing object {0}: push rejected, connectivity check failed")] MissingObject(gix_hash::ObjectId), - /// The reachability walk (`git-reachability`, WS6) itself failed — + /// The reachability walk (`gix-reachability`, WS6) itself failed — /// distinct from [`Self::MissingObject`], which is this crate's own /// mapping of that same failure at the negotiation/ingest call sites /// that need a typed reason to report back to a client. #[error(transparent)] - Reachability(#[from] git_reachability::Error), + Reachability(#[from] gix_reachability::Error), /// Decoding a commit, tree, or tag object failed. #[error("could not decode object: {0}")] Decode(String),
crates/git-protocol/src/walk.rs @@ -1,4 +1,4 @@ -//! Re-exports `git-reachability`'s shared reachability walk (WS6 moved the +//! Re-exports `gix-reachability`'s shared reachability walk (WS6 moved the //! implementation there — see that crate's `walk` module docs for why: //! it's where the commit-graph accelerator this walk degrades from now //! lives). Kept as a `walk` module here too so `negotiate`/`ingest`'s @@ -6,9 +6,9 @@ //! didn't need to change along with the move. //! //! [`crate::native::negotiate`] and [`crate::native::ingest`] call -//! [`git_reachability::engine::accelerated_reachable`] directly rather than +//! [`gix_reachability::engine::accelerated_reachable`] directly rather than //! [`reachable`] — the accelerated entry point wraps this walk, it isn't //! re-exported under this name too, so the call sites make plain which one //! they're using. -pub use git_reachability::walk::{ObjectSource, StoreSource, reachable}; +pub use gix_reachability::walk::{ObjectSource, StoreSource, reachable};
crates/odb-tigris/src/registry.rs @@ -62,8 +62,8 @@ } /// Which reachability accelerator an [`ArtifactRecord`] holds — see -/// `git-reachability` (`docs/scale-out.adoc`, "Reachability" / WS6) for the -/// binary formats themselves. Named here, rather than in `git-reachability`, +/// `gix-reachability` (`docs/scale-out.adoc`, "Reachability" / WS6) for the +/// binary formats themselves. Named here, rather than in `gix-reachability`, /// because the registry (this trait) is the thing both that crate and its /// Postgres implementation (`refstore-postgres`) need to agree on. #[derive(Debug, Clone, Copy, PartialEq, Eq)] @@ -99,7 +99,7 @@ /// One reachability artifact registered for a repo: enough to fetch its /// bytes from the bucket. A repo has at most one live artifact per -/// [`ArtifactKind`] — regenerating (`git-reachability`'s maintenance effect) +/// [`ArtifactKind`] — regenerating (`gix-reachability`'s maintenance effect) /// overwrites it, rather than accumulating snapshots, so lookup is by /// `(repo_id, kind)` alone. #[derive(Debug, Clone, PartialEq, Eq)]
crates/refstore-postgres/migrations/0001_init.sql @@ -133,7 +133,7 @@ -- Reachability artifacts (WS6, `docs/scale-out.adoc`'s "Reachability" -- section): the commit-graph and reachable-set accelerators --- `git-reachability`'s maintenance effect generates, tracked here rather +-- `gix-reachability`'s maintenance effect generates, tracked here rather -- than by bucket listing, same as packs above. One row per `(repo_id, -- kind)` — regenerating overwrites the existing row instead of -- accumulating snapshots, so `kind` alone (not a generated id) is enough to
crates/git-protocol/src/native/ingest.rs @@ -26,7 +26,7 @@ use gix_hash::ObjectId; use gix_object::Kind; -use git_reachability::engine::accelerated_reachable; +use gix_reachability::engine::accelerated_reachable; use super::{BackendResolver, NativeBackend}; use crate::attestation::{self, OP_LOG_REF}; @@ -46,14 +46,14 @@ } impl ObjectSource for IncomingPackSource<'_> { - fn find(&self, id: &ObjectId) -> git_reachability::Result<Option<(Kind, Vec<u8>)>> { + fn find(&self, id: &ObjectId) -> gix_reachability::Result<Option<(Kind, Vec<u8>)>> { if let Some(bundle) = self.bundle { let mut buf = Vec::new(); let mut inflate = gix_features::zlib::Inflate::default(); let mut cache = gix_pack::cache::Never; if let Some((data, _location)) = bundle .find(id, &mut buf, &mut inflate, &mut cache) - .map_err(|error| git_reachability::Error::Decode(error.to_string()))? + .map_err(|error| gix_reachability::Error::Decode(error.to_string()))? { return Ok(Some((data.kind, data.data.to_vec()))); } @@ -137,7 +137,7 @@ ); match connectivity { Ok(_reachable) => {} - Err(git_reachability::Error::MissingObject(id)) => { + Err(gix_reachability::Error::MissingObject(id)) => { return Ok(PushOutcome::Rejected { reason: format!("connectivity check failed: missing object {id}"), });
crates/git-protocol/src/native/mod.rs @@ -46,11 +46,11 @@ /// The config `authorized_members`' roles are checked against. pub config: git_ents_core::config::Config, /// This repository's reachability artifacts (WS6), if any have been - /// generated — [`git_reachability::ArtifactBundle::empty`] for a + /// generated — [`gix_reachability::ArtifactBundle::empty`] for a /// resolver that hasn't wired artifact loading yet, which is exactly /// the "absent artifact" case negotiation/ingest must (and do) degrade /// gracefully from. - pub reachability: git_reachability::ArtifactBundle, + pub reachability: gix_reachability::ArtifactBundle, } /// Resolves a [`RepoId`] to the backends that serve it.
crates/git-protocol/src/native/negotiate.rs @@ -2,13 +2,13 @@ //! same reachability walk ([`crate::walk`]) negotiation, push connectivity //! checking, and GC mark all share (`docs/scale-out.adoc`, "Reachability"). //! -//! Routed through [`git_reachability::engine::accelerated_reachable`] +//! Routed through [`gix_reachability::engine::accelerated_reachable`] //! (WS6): a commit-graph and, whenever a client's `haves` happen to equal a //! server-known tip-frontier, a cached reachable-set snapshot both //! accelerate this — absent either artifact, it is exactly the //! correctness-first, one-object-at-a-time walk it always was. -use git_reachability::engine::accelerated_reachable; +use gix_reachability::engine::accelerated_reachable; use super::{BackendResolver, NativeBackend}; use crate::types::{NegotiationState, PackPlan};
crates/git-protocol/src/native/test_support.rs @@ -81,7 +81,7 @@ pub config: git_ents_core::config::Config, /// Reachability artifacts every test sees — empty by default, so tests /// exercise the plain-walk fallback unless a test explicitly sets this. - pub reachability: git_reachability::ArtifactBundle, + pub reachability: gix_reachability::ArtifactBundle, } impl FixedResolver { @@ -93,7 +93,7 @@ objects: Arc::new(odb_files::OdbFiles::open(path).unwrap()), authorized_members: Vec::new(), config: git_ents_core::config::Config::default(), - reachability: git_reachability::ArtifactBundle::empty(), + reachability: gix_reachability::ArtifactBundle::empty(), } } }
crates/git-reachability/src/lib.rs → crates/gix-reachability/src/lib.rs
crates/git-reachability/src/engine.rs → crates/gix-reachability/src/engine.rs
crates/git-reachability/src/store.rs → crates/gix-reachability/src/store.rs
crates/git-reachability/src/reachable_set.rs → crates/gix-reachability/src/reachable_set.rs
crates/git-reachability/src/codec.rs → crates/gix-reachability/src/codec.rs
crates/git-reachability/src/commitgraph.rs → crates/gix-reachability/src/commitgraph.rs
crates/git-reachability/src/walk.rs → crates/gix-reachability/src/walk.rs
crates/git-reachability/src/maintenance.rs → crates/gix-reachability/src/maintenance.rs
crates/git-reachability/tests/equivalence.rs → crates/gix-reachability/tests/equivalence.rs @@ -2,7 +2,7 @@ //! (`docs/scale-out.adoc`, "Reachability": "absence or staleness degrades //! speed, never answers"): over several generated DAG shapes, the //! commit-graph-accelerated walk must return exactly the same reachable set -//! as the plain one, and a stale cached [`git_reachability::reachable_set:: +//! as the plain one, and a stale cached [`gix_reachability::reachable_set:: //! ReachableSetArtifact`] must still yield a correct answer once new commits //! have landed past the frontier it was built from. //! @@ -16,11 +16,11 @@ use std::path::Path; use std::process::Command; -use git_reachability::commitgraph::CommitGraph; -use git_reachability::engine::{self, ArtifactBundle}; -use git_reachability::reachable_set::ReachableSetArtifact; -use git_reachability::walk::{self, StoreSource}; use gix_hash::ObjectId; +use gix_reachability::commitgraph::CommitGraph; +use gix_reachability::engine::{self, ArtifactBundle}; +use gix_reachability::reachable_set::ReachableSetArtifact; +use gix_reachability::walk::{self, StoreSource}; fn bare_repo() -> tempfile::TempDir { let dir = tempfile::tempdir().unwrap();
crates/git-reachability/Cargo.toml → crates/gix-reachability/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "git-reachability" +name = "gix-reachability" version = "0.0.0" edition.workspace = true publish.workspace = true