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
Dependencies
Tracking
Summary
Migrate
gitstore-git-servicefrom thegit2crate (libgit2-backed) togitoxideso 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 thegitbinary, and makes deeper in-processreceive-packintegration more practical.Scope
In Scope
git2usage ingitstore-git-servicewithgitoxideequivalents for repository open/init, ref discovery, commit/tag inspection, and repository metadata operations.git2and any libgit2-specific build requirements.Out of Scope
gitbinary (tracked separately in [Initiative] Remove git binary shell-outs from gitstore-git-service #109).Acceptance Criteria
gitstore-git-serviceno longer depends on thegit2crate.gitoxideor internal abstractions built on it.git2andgitoxidebehaviour.Dependencies
Tracking