Hi all,

As we are discussing cutting a release for 2.4.3 in another thread, we
should discuss how to label the changes (pull requests) for minor releases.

Currently, we used milestones for both major releases (e.g. 2.5.0) and
minor releases (e.g. 2.4.3). A change will be first merged to master and
released for the upcoming major release, and the change can *potentially*
be cherry-picked to a branch for patching a minor release.

For example, let's say pull request X is merged to master and released in
2.5.0. If we need this change to be committed for a 2.4.3 release, we can't
simply change the milestone to 2.4.3 because this change is already marked
as released in 2.5.0.

The limitation of milestones introduces the troubles for managing
concurrent major and minor releases. Hence we need to look for a solution
for addressing the problems.

I am proposing the followings:

1. We keep using milestone *ONLY* for major releases, such as 2.5.0, 2.6.0
and etc.
2. We DONT use milestones for minor releases.
3. We use `release/x.y.z` labels for minor releases, such as 2.4.3, 2.5.1
and etc.

In this way, we are able to track which releases that a pull request is
included in.

Hence the merge process will be much clearer.

1) when merging a pull request, add the milestone (major release) to this
pull request that it belongs.
2) if this pull request is needed for a minor(/patch) release for a
previous major release, add the minor release label.
3) at the time of cutting a minor release, the release manager can go
through all issues labeled for it and cherry-pick to the given branch.

In the future, we can introduce the merge tool (or a merge bot) to automate
this merge or cherry-pick process if needed.

Thoughts?

- Sijie

Reply via email to