Skip to content

[Initiative] Decouple API from Git Storage via gRPC Git Service #65

@juliuskrah

Description

@juliuskrah

Summary

Replace filesystem-level coupling between gitstore-api and gitstore-git-service with a gRPC contract (Gitaly-inspired) so all Git read/write operations are executed by gitstore-git-service. The API must no longer depend on a shared Git directory or bundle a Git client library such as go-git. Existing websocket notifications continue to be used for push-based update signaling where appropriate.

Scope

In scope:

  • Define and implement gRPC APIs in gitstore-git-service for Git read and write operations required by gitstore-api.
  • Migrate gitstore-api Git operations to gRPC clients and remove direct repository access through shared volume assumptions.
  • Remove API-side dependency on embedded Git client behavior for repository mutation/read paths (including eliminating go-git usage in API Git interaction paths).
  • Preserve or adapt websocket-triggered update propagation so API cache/reload behavior still reacts to repository changes.
  • Add integration and contract tests for API <-> git-service gRPC interactions covering both read and write flows.
  • Update architecture and developer docs to reflect gRPC service boundaries and runtime configuration.

Out of scope:

  • Replacing the KV-optimized read layer for latest tag/release or changing its purpose.
  • Rewriting unrelated catalog query optimizations not tied to API/git-service transport decoupling.
  • Introducing a full Git monolith replacement beyond the scoped gRPC service boundary.

Acceptance Criteria

  • gitstore-api performs required Git reads/writes via gRPC to gitstore-git-service, not via shared Git directory access.
  • API runtime no longer requires direct Git repository filesystem mounting for core Git operations.
  • API Git operation paths no longer rely on bundled go-git behavior.
  • gRPC read and write paths are covered by automated integration/contract tests in CI.
  • Websocket-driven update signaling remains functional with the new gRPC-based interaction model.
  • Documentation clearly distinguishes this transport/service decoupling work from KV latest tag/release read optimizations.

Tracking

  • Milestone: TBD

Metadata

Metadata

Assignees

No fields configured for Feature.

Projects

Status

Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions