[package] name = "git" description = "Git object reads, attribute resolution, signatures, and pack-transport spawning." version.workspace = true edition.workspace = true rust-version.workspace = true license.workspace = true authors.workspace = true repository.workspace = true publish.workspace = true [dependencies] model = { workspace = true } git2 = { workspace = true } globset = { workspace = true } moka = { workspace = true } ssh-key = { workspace = true } pgp = { workspace = true } # Async subprocess spawning for pack transport (clone/fetch/push). One code path # shared by the HTTP (web) and SSH transports. tokio = { workspace = true } thiserror = { workspace = true } # Pin the libgit2 bindings to a build that requires libgit2 <= the version # nixpkgs ships (1.9.4). git2 0.20's default libgit2-sys (0.18.7, bundling 1.9.6) # demands >= 1.9.6 and fails against the system lib under LIBGIT2_NO_VENDOR. This # is a direct pin, not used in code — bump it when nixpkgs bumps libgit2. See # docs/decisions.md. libgit2-sys = "=0.18.3" [dev-dependencies] tempfile = { workspace = true } # Random key generation for the SSH signature fixtures (PrivateKey::random). rand_core = { workspace = true } [features] # Build libgit2 from source and link it statically, so the runtime image needs no # system libgit2. Used by the Dockerfile (`--features vendored`); the Nix build # uses the system libgit2 instead (LIBGIT2_NO_VENDOR=1). vendored = ["git2/vendored-libgit2"] [lints] workspace = true