Supporting multi-repo workspaces (folder of N sibling git repos) #155
Replies: 3 comments
|
Closing several of the open questions, leaving two open. Decisions
Still openRoot files in a non-git parentThe worktree includes the parent's root-level files (outside any sub-repo). The parent isn't a git repo, so those files have no version control. When two concurrent sessions both edit
Schema for "session targets multiple sub-repos"A.
B. JSON column on
C. One session per sub-repo + a
D. Single repo with branch-name convention
|
Workspace Worktree Provisioning — OptionsContextAO assumes one project = one git repo. We want to support workspaces: a folder containing N sibling git repos, where the parent folder may or may not itself be a git repo. The hard question is how a session's worktree gets provisioned when the user runs This doc lists every viable option for the provisioning mechanism with full pros/cons. No recommendation — that's for the maintainer to call. Constraints baked in:
Summary table
OptionsOption 1: Plain parent + per-child
|
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Right now AO assumes
one project = one git repo. Sessions get isolated working copies viagit worktree add, branches map 1:1 to sessions, and the SCM observer watches one remote per project.That misses a common shape: a folder containing several sibling git repos.
We want AO to support this: one logical project, N sibling git repos underneath, where the parent folder may or may not be a git repo.
Scope is git-only. If a sub-folder isn't a git repo, AO will offer to
git initit or refuse to register it. No COW / overlay / non-git fallback.Registration UX
When the user runs
ao project add <path>:git initfor those, or skip them.git initfirst.Open questions
This thread is for scoping. No proposed design — just the questions that need answers before anyone starts designing.
Workspace model
.ao/inside the parent folder? AO's SQLite store only? Both?Isolation unit
--targets cli,api?Schema changes
sessions.project_idtoday implies one branch on one repo. With workspaces, do we need session × sub-repo rows? A newsession_targetjoin?SCM observer
Activity attribution / hooks
cli/andapi/, which sub-repo "owns" the resulting activity events? Both? The first one touched?Cleanup / reaper
Registration UX details
ao project add --as-workspace/--pick-subrepo <name>bypass it for scripts?git inits a sub-folder, does it mark anything in.git/configas AO-managed?Scope for this iteration
All reactions