Skip to content

[Initiative] Migrate gitstore-git-service from git2 to gitoxide #108

@juliuskrah

Description

@juliuskrah

Summary

Migrate gitstore-git-service from the git2 crate (libgit2-backed) to gitoxide so core repository operations are implemented in pure Rust. This reduces the native dependency surface, aligns with the long-term plan to remove shell-outs to the git binary, and makes deeper in-process receive-pack integration more practical.

Scope

In Scope

  • Replace git2 usage in gitstore-git-service with gitoxide equivalents for repository open/init, ref discovery, commit/tag inspection, and repository metadata operations.
  • Update internal abstractions so repository access is no longer tied to libgit2-specific types.
  • Update build configuration and dependencies to remove git2 and any libgit2-specific build requirements.
  • Preserve existing HTTP smart protocol and websocket behaviour during the migration.
  • Add or update tests to validate parity for repository initialization, ref discovery, and tag event handling.

Out of Scope

Acceptance Criteria

  • gitstore-git-service no longer depends on the git2 crate.
  • Core repository operations currently backed by libgit2 are implemented using gitoxide or internal abstractions built on it.
  • Existing repository initialization, ref listing, and tag/event tests continue to pass after migration.
  • Build and runtime images no longer require libgit2-specific toolchain setup.
  • Documentation or developer notes identify any intentionally deferred gaps between git2 and gitoxide behaviour.

Dependencies

Tracking

  • Milestone: TBD

Metadata

Metadata

Assignees

No one assigned

    Type

    No fields configured for Task.

    Projects

    Status

    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions