-
Notifications
You must be signed in to change notification settings - Fork 13
Release branch and versioning policy #207
Copy link
Copy link
Closed
Description
Background
Currently all development happens on main. We introduce release branches to enable patch releases, downstream version coordination, and multi-line maintenance.
Task
Adopt the X.Y.x branch convention, widely used by Spring and others. Start with this and refine as we go.
- Create
0.1.xbranch from d7e8431 (stable in the internal codebase) - Update
gradle.propertiesto0.1.0on0.1.x - Tag as
v0.1.0 - Bump
mainto0.2.0-SNAPSHOT(Bump version to 0.2.0-SNAPSHOT #208)
Branch naming
Use X.Y.x format. Example: 0.1.x, 0.2.x
Versioning
Follow SemVer. Use -SNAPSHOT suffix during development.
0.1.0-SNAPSHOT → 0.1.0 (release) → 0.1.1-SNAPSHOT → 0.1.1 (patch)
Release flow
main: A ─ B ─ C ─ D ─ E ─ ...
│
tag v0.1.0
└── 0.1.x: C ── D' (cherry-pick) ── tag v0.1.1
Release
From main:
0.1.0-SNAPSHOT→0.1.0, tagv0.1.0- Create
0.1.xbranch from tag, bump to0.1.1-SNAPSHOT - Bump
mainto0.2.0-SNAPSHOT
Patch release
From X.Y.x branch:
- Merge fix to
mainfirst - Cherry-pick to
0.1.x 0.1.1-SNAPSHOT→0.1.1, tagv0.1.1- Bump to
0.1.2-SNAPSHOT
Upstream-first
Fixes go to main first, then cherry-pick to release branches.
✅ main → cherry-pick → 0.1.x
❌ commit directly to 0.1.x only
Exception: when main has diverged significantly and cherry-pick is not feasible, apply directly to the release branch. Document the reason in the commit message.
Support policy and artifacts
During 0.x.x, only the latest release line is supported. Artifacts are tags only. Details to be defined after 1.0.0.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels