Many GitHub/Gitea/etc. projects use this workflow:
- milestones are used to prioritise work
- milestones correspond to production versions
- PRs are assigned to milestones
- PRs are merged into master
- a production version only contains PRs of the milestone from which it was generated
The last point is what I don't understand.
Suppose these milestones exist: 1.1.3-backport, 1.2.6-bugfix, 1.3.0, 1.4.0, 1.5.0. When a release is generated from master, I'd expect it to include PRs from the target milestone (e.g. 1.3.0) as well as the others. And yet it magically contains PRs from that milestone only.
So during the release process, how does one ensure the release contains PRs from the target milestone only?
(If this is done by cherry picking: what happens if a PR in milestone 1.3.0 relies on code in PRs assigned to other unreleased milestones?)
UPDATE:
From comments below. I'm not using the term "release" in the way GitHub uses it, but in the general sense of a release artefact - the thing that goes into production. The same idea exists for other forges, e.g. Gitea.