With 1.6.0 progressing and the usual dependency updates underway, I
noticed that the previous branching scheme documentation is incorrect
with respect to handling of changes tied to a release while the staging
branch for that release exists.
I've updated things to clarify:
* The "patch" branch represents the next possible patch release that
is not yet being staged.
* The "main" branch represents the next possible minor release that
is not yet being staged.
* The "next" branch represents the next possible major release that
is not yet being staged.
Thus, after 1.5.5 was released:
* "patch" represented a possible 1.5.6 release.
* "main" represented a possible 1.6.0 release.
* "next" represented a possible 2.0.0 release.
And now that "staging/1.6.0" has been created off "main":
* "staging/1.6.0" represents the 1.6.0 release being prepared for RC.
* "patch" represents a possible 1.6.1 release.
* "main" represents a possible 1.7.0 release.
* "next" represents a possible 2.0.0 release.
Additionally, the documentation had stated that changes to the staging
branch should be merged back to whichever base branch originated that
staging branch, but this is incorrect and will result in the branches
getting out of sync. The staging branch should *always* be merged back
to "patch" such that it correctly represents whichever patch release
would follow the release being staged, and then those changes can be
merged back to the other branches following the usual cascade of merges.
In the case of a major or minor release, this would include merging the
staging branch back to "patch" after the staging branch is created.
https://cwiki.apache.org/confluence/display/GUAC/Version+Numbering+and+Branching+Scheme
- Mike