Skip to content

Delphi 0.9.0: linked workspaces are full clones on their branch - #71

Merged
bracyw merged 1 commit into
mainfrom
linked-clones
Oct 18, 2026
Merged

bracyw merged 1 commit into
mainfrom
linked-clones

Conversation

@bracyw

@bracyw bracyw commented Oct 18, 2026 •

Copy link
Copy Markdown
Contributor

Changes

linked/<name> is now a full clone of Delphi on ws/<name> (or main), tracking origin, with pushes allowed. Before, it was a shallow, detached copy that couldn't push. git status, git log and the rest work the way they do in any clone. On every run, setup.sh switches each clone back to its branch if it was switched away, using that clone's own switch.sh (a no-op when it's already on the branch), then runs git pull --ff-only. By convention a workspace still doesn't edit its links, especially from the workspace's own session.

Diagram

flowchart LR
  O1[(origin)] -- "before: checkout --detach" --> B["linked/#lt;name#gt;<br/>no branch, read-only"]
  O2[(origin)] -- "after: switch back if needed, git pull" --> A["linked/#lt;name#gt;<br/>on ws/#lt;name#gt;"]
Loading

Testing

  • e2e: links are full clones on their branch, tracking origin, and can push (dry run)
  • e2e: a clone switched to another branch is switched back on re-run and pulled
  • e2e: with uncommitted changes, the switch back is refused with a warning and the clone is left as it is; setup still succeeds
  • e2e: the 0.9.0 migration converts old shallow, detached, push-disabled copies in place and keeps their local edits

Notes

  • Switching a linked clone back to a workspace runs that workspace's own setup inside it, the same as any switch.sh. That clones its repos under linked/<name>/, but only after someone switched the clone away.
  • references/ stays read-only.
  • Parked links belong to their own workspace. Each one is migrated when that workspace's setup runs.

Checklist

  • ci/check.sh . and bash tests/e2e.sh pass
  • Version bumped if a .delphi/manifest.yml file changed
  • No merge conflicts
  • Request reviewers & ping on Slack

…acking origin; setup.sh switches each back to its branch if switched away and pulls it; migration converts old read-only copies
@bracyw bracyw added the by: ai-assisted Written by a person with AI help label Oct 18, 2026
@bracyw
bracyw merged commit 9dd6871 into main Oct 18, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

by: ai-assisted Written by a person with AI help

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant