2.2.2. Committing Bugfixes
Bugfixes should always be committed to the current stable branch (assuming they affect it) first. So for example at the time of writing
bugfixes should be committed to the v1-7 branch. These bugfixes will be merged forwards into the default branch periodically. The reasons for
committing to the stable branch first and merging forward, as opposed to committing to the default branch and picking commits to transplant back to the
stable branch, are many:
-
It encourages primary testing and early committing on the stable branch, which is where fixes are needed most urgently anyway.
-
Merge conflicts always happen in the unstable branch, not the stable branch. This is better again because the stable branch is the most important to keep as clean as possible
-
Merging is automatic. You always want to merge ALL changes from the stable branch into the default branch, there is no human error involved in selecting what changes to merge. If you cherry-pick fixes to port to the stable branch, you have to make sure you don’t miss anything, make sure you don’t accidentally include an interface change, etc. And if someone has committed a combined fix and an API change in one commit (see below) it’s a mess.
2.2.3. Committing New Features and Breaking Changes
Any new feature, or a change which changes either the API or the behaviour within the existing API, must always be committed to the default branch (often referred to as unstable).