Skip to content

Slice 3 — User can create an empty Repository and 'git clone' it over HTTPS #3

@safayavatsal

Description

@safayavatsal

What to build

End-to-end repository creation and HTTPS clone. This is the first slice where GitRepository (the deep module) earns its keep.

  • Web UI: "New Repository" form with name and (deferred-elsewhere) visibility flag. Repository list page on the user's profile.
  • platform-api: POST /repos, GET /repos, GET /repos/:owner/:name endpoints. On create, GitRepository.Init runs and produces a bare repo on EBS.
  • HTTPS Git transport: platform-api mounts git-http-backend (or equivalent) at /:owner/:name.git/.... An empty repo can be cloned with git clone https://forge.../<owner>/<name>.git.
  • Auth on Git HTTPS: at this slice, accept the session cookie from web. Personal Access Tokens come in slice 12.

Acceptance criteria

  • A signed-in user can create a Repository named hello-world from the web UI.
  • The Repository appears in the user's repo list.
  • git clone https://forge.../<owner>/hello-world.git against an empty Repository succeeds and produces a valid empty Git working tree.
  • Cloning a non-existent repository returns a clean 404 without leaking internal errors.
  • GitRepository has unit tests covering Init, ListRefs on an empty repo, and idempotent re-init protection.
  • Repository slugs are validated (lowercase, alphanumeric + dash, length limits).

Blocked by

Metadata

Metadata

Assignees

No one assigned

    Labels

    afkImplementable without architectural decisionsready-for-agentTriaged and ready for an AFK agent to pick uptracer-bulletVertical slice through all integration layers

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions