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
|
Beta Was this translation helpful? Give feedback.
-
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
|
Beta Was this translation helpful? Give feedback.
-
|
Closing this scoping thread: the provisioning direction is settled as composed child git worktrees for every registered child repo. Follow-up implementation risks are tracked in #161: #161 |
Beta Was this translation helpful? Give feedback.
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
Beta Was this translation helpful? Give feedback.
All reactions