There are two to three main branches in the MonetDB repository:
- The default branch is where development happens.
- The candidate branch is the branch that is used to prepare the next feature release, and
- The stable branch is the branch for the current release.
The names 'candidate' and 'stable' are here only used as variables. The actual branch names change over time. At the time of writing, there is no candidate branch , and the stable branch is named after the month it was released; you'll find which one it is by visiting the source download directory, together with some earlier release branches.
There are rules pertaining to what is allowed on each of the branches. In short, bug fixes, and only bug fixes, are allowed on the stable and candidate branches. There is a difference in the changes that can happen for a bug fix. In the stable branch changes to the ABI are forbidden. Stable ABIs must be stable. In the candidate branch, ABI changes may still be acceptable. The release manager decides on this.
In the default branch, larger changes are possible. However, in order to keep a working default branch, changes that are not bug fixes must be prepared on temporary branches that are kept in sync with the default branch by the developer of the change. Once a change is complete, it can be merged into the default branch. A change cannot be called complete unless it:
- Compiles successfully
- Has been tested and fixed,
- Any new or modified test outputs have been verified and approved appropriately.
In other words, the TestWeb must be Green for all our standard testing platforms.
Note that it is possible to have a branch on which major changes are being developed, and which is merged into the default branch multiple times, whenever a complete part of the major change is finished.