Agent Bare Mode: Repos per URL clonen & aktuell halten #16
Labels
No labels
agent:done
agent:ready
agent:working
enhancement
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
frank/forgecli#16
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
Heute braucht der Agent-Orchestrierer einen bereits vorhandenen lokalen Checkout (
ResolveRepoRoot: CWD oder~/.config/forge/repos/owner/repo). Worktrees hängen an diesem Non-Bare-Repo; Frische hängt davon ab, dass jemand manuell pullt bzw. später Post-Merge-Sync (#15) greift.Für Multi-Repo-Watch ist das unpraktisch: Config und Betrieb müssten lokale Pfade pflegen, obwohl der Orchestrierer eigentlich nur die Remote-URL braucht und Worktrees selbst anlegen kann.
Verwandt: #15 (Configfile inkl.
path:), #10/#13 (Worktree-Lifecycle).Ziel
Bare Mode: In der Config stehen nur noch Repo-URLs (bzw.
owner/repo+ Host). Der Agent-Orchestrierer~/.config/forge/repos/owner/repo.git),git worktree add), sodass neue Runs immer auf aktuellem Base-Stand starten.Kein manueller Working-Tree-Checkout mehr nötig; optionale Legacy-Pfade können weiter unterstützt werden.
Scope
1. Config: nur URLs / Repo-Identität
Beispiel (Keys final in der Implementierung festlegen; abstimmen mit #15):
pathfür Bare Mode.--repos) bleibt kompatibel:owner/reporeicht; Clone-URL aus API/forgeHost ableiten.2. Bare-Clone & Fetch
git clone --bare <url> <cache>.gitutil.Clone/ Token / SSH).PrepareWorktree(und sinnvoll periodisch im Watch-Loop):git fetch --prune origin(alle relevanten Refs).remote HEADauflösen; Worktree-Base immer vom frischen Remote-Tracking-Ref (z. B.origin/main).3. Worktrees aus Bare-Repo
PrepareWorktree/ Git-Flow so anpassen, dass Base ein Bare-Repo sein kann (Worktree-Dir z. B. neben dem Cache oder unter.forge-worktreesrelativ zum Cache-Root — Layout dokumentieren).4. Aktualität
Nicht im Scope (zunächst)
path/ CWD) darf vorerst parallel bleiben.Akzeptanzkriterien
pathnur per URL bzw.owner/repoangeben.--helpdokumentieren Bare Mode, Cache-Pfad und Fetch-Verhalten; Tests für Clone/Fetch/Worktree-Pfade.Relevante Code-Stellen
internal/agent/gitflow.go—DefaultRepoCacheDir,ResolveRepoRoot,PrepareWorktreeinternal/agent/pipeline.go— Repo-Auflösung vor Runinternal/agent/config.go—RepoTarget/ später Configfile (#15)internal/gitutil/git.go— Clone mit Token/SSHinternal/cmd/agent.go— CLI-WiringUmsetzungsschritte (Vorschlag)
path; Doku + Testspathals Default)🤖 forge agent started
cursor-agent(default)prassignee=agentAgent Bare Mode: Repos per URL clonen & aktuell halten — Heute braucht der Agent-Orchestrierer einen bereits vorhandenen lokalen Checkout (
ResolveRepoRoot: CWD oder~/.config/forge/repos/owner/repo). Worktrees hängen an diesem Non-Bare-Repo;…