Adopt GitFlow, and document CI and releasing under docs/ - #7
Merged
Conversation
Moves the repo from a single trunk to GitFlow as originally defined, plus long-lived support/* lines because the extension has to keep serving Fallout release lines that main has moved past. develop integration trunk, and the new default branch main production; only release/hotfix merges, each tagged release/* stabilisation window, develop -> main -> back to develop hotfix/* urgent production fix, main -> main -> develop support/vX.Y maintenance line for an older Fallout line, cut on demand support/* rather than release/vX.Y for the maintenance lines: in GitFlow the release/* prefix already means the temporary stabilisation branch, and overloading it makes every sentence about "the release branch" ambiguous. Fallout uses support/* for the same concept. Wiring: - build.yml regenerated to gate PRs into develop, main and support/*. build-skip.yml mirrors that branch list, as it already mirrors the job name and the inverse path set. - preview.yml moves to push-on-develop. main only receives tagged release merges, so a preview build of main would duplicate a release build of the same commit. - publish.yml's validate-ref now accepts main and support/vX.Y, and rejects develop: under GitFlow the trunk is never tagged for release. - version.json's publicReleaseRefSpec covers every branch that can produce a distributable build, so `nbgv get-version` stays honest before tagging. Docs under docs/, with mermaid diagrams — all six validated by rendering them through mermaid-cli rather than eyeballing the syntax: - branching-and-release.md: the model, a gitGraph of the full flow, and a decision tree for which branch a given fix belongs on. - ci.md: what runs when, the generated-vs-hand-written split and why, and the required-check/paths-ignore trap build-skip.yml exists for. - releasing.md: versioning, channels, and a runbook per release kind. RELEASING.md is removed in favour of docs/releasing.md; README points at the new set and states the contribution flow. .vscodeignore excludes docs/ so none of it ships in the .vsix. Two frictions documented rather than papered over, both from GitFlow meeting this repo's linear-history rule: develop -> main wants a rebase merge, not a squash, or a whole release collapses into one commit; and "merge back to develop" is necessarily a cherry-pick or second PR, since merge commits are disabled. The effect must still happen — a hotfix that never reaches the trunk ships once and then vanishes on the next release. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Moves the repo from a single trunk to GitFlow as originally defined, plus long-lived
support/*lines because the extension has to keep serving Fallout release lines thatmainhas moved past.developmainrelease/*develop→main→ back todevelophotfix/*main→main→developsupport/vX.YWhy
support/*and notrelease/vX.YIn GitFlow the
release/*prefix already means the temporary stabilisation branch. Using it for a long-lived maintenance line makes every sentence about "the release branch" ambiguous.support/*is what thegit-flowAVH tooling calls it, and what Fallout calls it.Wiring
build.ymlregenerated from the attribute to gate PRs intodevelop,mainandsupport/*.build-skip.ymlmirrors that branch list, as it already mirrors the job name and the inverse path set.preview.ymlmoves to push-on-develop.mainonly receives tagged release merges, so a preview build ofmainwould duplicate a release build of the same commit.publish.yml'svalidate-refnow acceptsmainandsupport/vX.Y, and rejectsdevelop— under GitFlow the trunk is never tagged for release.version.json'spublicReleaseRefSpeccovers every branch that can produce a distributable build, sonbgv get-versionstays honest before tagging.Docs
Three docs under
docs/, with mermaid diagrams — all six validated by rendering them throughmermaid-cli, not by eyeballing the syntax:branching-and-release.md— the model, agitGraphof the full flow, and a decision tree for which branch a given fix belongs on.ci.md— what runs when, the generated-vs-hand-written split and why, and the required-check/paths-ignoretrap thatbuild-skip.ymlexists for.releasing.md— versioning, channels, and a runbook per release kind (simple, stabilised, RC, hotfix, support line, promotion).RELEASING.mdis removed in favour ofdocs/releasing.md. README points at the new set and states the contribution flow..vscodeignoreexcludesdocs/**so none of it ships in the.vsix.Two frictions documented rather than papered over
Both come from GitFlow meeting this repo's linear-history rule:
develop→mainwants a rebase merge, not a squash. Squashing collapses an entire release into one commit on the production branch.Note on sequencing
This PR targets
main, notdevelop, and it's the last one that will.developdoesn't exist yet: if I'd created it first, a PR into it would have run no gate at all —build.ymlcurrently only triggers on PRs tomain— anddevelop's protection would then block forever on a check that never arrives. This PR is what teaches CI aboutdevelop.After merge: create
developfrommain, make it default, and applymain's protection profile to it.🤖 Generated with Claude Code