Skip to content

[Initiative] API driven repository creation #67

@juliuskrah

Description

@juliuskrah

Summary

Starting GitStore currently requires running an initialization script to bootstrap the backing Git repository. This is not end-user friendly. Implement API-driven repository creation so the platform can provision repositories programmatically, similar to Git hosting platforms that create repositories via API calls.

Scope

In scope:

  • Add API capabilities to create and initialize repositories without requiring manual init scripts.
  • Implement server-side bootstrap flow in gitstore-git-service for repository initialization and default branch setup. (Implemented in [Initiative] Migrate gitstore-git-service from git2 to gitoxide #108)
  • Expose orchestration path from gitstore-api to request repository creation through service APIs.
  • Enforce namespace-scoped repository creation (<namespace>/<repo>) so repositories cannot be created at root scope.
  • Integrate with API-driven namespace creation/lifecycle once provided by [Initiative] Namespaces #39.
  • Return clear error handling for already-existing repos, invalid inputs, and permission failures.
  • Update docs to describe API-first bootstrap flows for users and operators.

Out of scope:

  • Defining namespace domain model and cross-namespace policy behavior (covered by [Initiative] Namespaces #39).
  • Building a full GitHub-equivalent repository management product surface in this initiative.
  • Removing existing scripts before API-driven bootstrap reaches parity and is validated.

Acceptance Criteria

  • A repository can be created and initialized through API flows without running init scripts manually.
  • Repository creation requires an existing namespace and rejects root-scope creation.
  • API responses clearly indicate success/failure and include actionable errors.
  • Bootstrap flow supports namespace-aware repository creation once namespaces are available.
  • Documentation includes API-first setup path and migration notes from script-based initialization.

Subtasks

Tracking

Metadata

Metadata

Assignees

No fields configured for Feature.

Projects

Status
Done

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions