- Add SSH-only owner/repo clone path for git.commumedia.org - Preflight remote repository existence with git ls-remote before cloning - Keep advanced URL paste fallback and blank repository creation - Add focused backend and frontend coverage plus docs updates Quality gates: python -m py_compile, vitest run src/components/repositories-settings-tab.test.tsx, npm run typecheck
2.1 KiB
Context
The current repository creation flow already supports cloning remote repositories via remote_url and can normalize pasted browser URLs. However, the UI asks for a full URL, which is awkward for the fixed provider git.commumedia.org. The requested behavior is to enter owner and repo, check whether the repository exists, and clone only if it does.
Goals / Non-Goals
Goals:
- Accept SSH-only
ownerandrepoinputs for cloning fromgit.commumedia.org - Verify repository existence before clone
- Preserve full URL paste as a fallback path
- Preserve blank repository creation
- Reuse the existing repository create endpoint and shared dialog
Non-Goals:
- Supporting multiple git providers
- Adding a remote repository discovery API
- Supporting HTTPS clone flow for the new structured path
- Changing repository storage or clone behavior beyond preflight validation
Decisions
1. Provider assumption
- Hardcode
git.commumedia.orgfor the structured clone path - Build SSH URLs as
git@git.commumedia.org:{owner}/{repo}.git
2. Existence check
- Use
git ls-remoteon the constructed SSH URL before cloning - If the command fails, surface a repository-not-found/inaccessible error and do not clone
3. UI structure
- Keep the shared repository creation dialog as the single entry point
- In clone mode, collect
ownerandrepoinstead of asking for a full URL - Keep an advanced paste-URL fallback for existing behavior and browser URL parsing
- Keep blank repository creation available in the same dialog
4. Backend behavior
- Reuse
POST /projects/{project_id}/repositories - Add preflight logic before the existing
git clone --mirror - Leave the database schema unchanged
Risks / Trade-offs
[Risk] SSH auth may still fail even if the repo exists → Mitigation: preflight error should be explicit and user-facing.
[Risk] Command availability → Mitigation: reuse the same git dependency already required for cloning.
[Risk] UI complexity → Mitigation: keep the dialog shared and minimal, with fallback URL paste.