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 one assigned
    No fields configured for Feature.

    Projects

    Status

    Todo

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions