(feat): add Split Dev workflow for publishing feature-branch splits#57
Conversation
Dispatching Split Dev on a feature branch pushes the named packages' splits to their mirrors under the same branch name, so consumers can require utopia-php/<name>:dev-<branch> from Packagist before merge -- restoring the pre-monorepo unblock flow. action=delete removes the mirror branch when done.
Greptile SummaryThis PR adds a manually-dispatched
Confidence Score: 5/5Safe to merge — the workflow is additive, touches no existing logic, and is manually dispatched only by users with write access. The implementation is self-contained and consistent with the existing split.yml patterns (pinned SHA actions, SPLIT_REMOTE_BASE env var for token, persist-credentials: false). The delete loop correctly uses if/else to survive partial failures without triggering bash exit-on-error, and the version-alias logic filters pre-release tags before computing the alias. No existing workflows or release paths are affected. No files require special attention. Important Files Changed
Reviews (2): Last reviewed commit: "(fix): harden split-dev delete loop and ..." | Re-trigger Greptile |
Address review: the delete loop now continues past a failed push (warning per package, non-zero exit at the end) instead of stranding remaining mirror branches under bash -e, and the summary alias anchors to the newest stable tag so a pre-release on a newer major cannot hoist it, falling back to the newest tag for rc-only packages.
What
Adds a manually dispatched Split Dev workflow that publishes a feature branch's split of one or more packages to their read-only mirrors, restoring the pre-monorepo unblock flow: a consumer (e.g. Appwrite) can
composer require utopia-php/<name>:dev-<branch>from Packagist before the branch is merged or released.How
package(space-separated names) andaction(publish|delete).publishreuses the existingbin/monorepo split <pkg> --branch=<branch> --forcewith the same split-app token as the regular Split workflow — nobin/monorepochanges needed.--forcebecause rebases change the synthesized split history.deleteremoves the mirror branch once the work merges or is abandoned.dev-my-branch as 2.0.999) so sibling constraints keep resolving; unreleased packages fall back to plaindev-<branch>.main(that's the regular Split's job). Mirror rulesets only target the default branch, so dev branches need no ruleset changes.docs/distribution.md, pointer in the README's cross-package section.Verification
bin/monorepo split http di --branch=test-branch --dry-runsynthesizes both split heads.http→as 2.0.999) and unreleased (nats) packages.