-
Notifications
You must be signed in to change notification settings - Fork 207
Branches and Versioning
At any one time, we are actively developing three different versions of Gaffer, each on a separate branch in the main repository :
- The next major version scheduled for release is developed on the
main
branch. This branch receives new backwards-incompatible features, and other changes we consider too big or risky for a minor release. - The current major version is maintained on a branch named
<currentMajorVersion>_maintenance
, which is0.56_maintenance
at the time of writing. This branch receives new backwards-compatible features and bug fixes. - The previous major version is maintained on a branch named
<previousMajorVersion>_maintenance
, which is0.55_maintenance
at the time of writing. This branch receives bug fixes only.
All three branches are kept in a releasable state at all times. We make each pull request to the branch for the major version in which we want our code to be released.
When making a bugfix to the previous major version, we naturally want to ensure that the same fix will be included in the next release of the current major version, and in any forthcoming release from main. Likewise, we want new features developed for the current major version to also be available in the next major version. We achieve this by regularly merging forwards from the maintenance branches to the main branch. We do this as follows :
# Merge patches from previous to current major version
# ----------------------------------------------------
git checkout <previousMajorVersion>_maintenance
git pull upstream <previousMajorVersion>_maintenance
git checkout <currentMajorVersion>_maintenance
git pull upstream <currentMajorVersion>_maintenance
git merge <previousMajorVersion>_maintenance
# Edit Changes.md to copy new bug fixes into current major
# version.
git commit Changes.md
git push upstream <currentMajorVersion>_maintenance
# Merge features and patches from current major version to main
# -------------------------------------------------------------
git checkout main
git pull upstream main
git merge <currentMajorVersion>_maintenance
git push upstream main
If this has gone smoothly, a quick double check at https://github.com/GafferHQ/gaffer/network should reveal a branch network much like the following :