This document describes the release workflow for FieldWorks. It covers creating release branches, fixing bugs in release branches, and publishing releases.
Release Manager: Jason Naylor
When it's time to prepare a new release, create a new release branch named after the upcoming version.
# Create and checkout release branch from the develop branch
git checkout develop
git pull origin develop
git checkout -b release/9.3
# Push to remote
git push -u origin release/9.3Note: Creating release branches typically requires release manager permissions.
If someone else has already started a release branch:
# Fetch all branches
git fetch --all
# Track and checkout the release branch
git checkout release/9.3# Ensure you're on the release branch
git checkout release/9.3
git pull
# Create a bugfix branch
git checkout -b bugfix/LT-12345-fix-description- Make your changes and commit them
- Push your branch:
git push -u origin bugfix/LT-12345-fix-description
- Create a Pull Request targeting the release branch
# Clean up local branch
git checkout release/9.3
git pull
git branch -d bugfix/LT-12345-fix-descriptionWhen the release is ready:
-
Ensure all pending PRs for the release branch are merged
-
Create a release tag:
git checkout release/9.3 git pull git tag -a v9.3.0 -m "Release 9.3.0" git push origin v9.3.0 -
Merge the release branch back to develop (if applicable)
Hotfixes are for critical bugs in released versions that can't wait for the next scheduled release.
# Create hotfix from the release tag
git checkout v9.2.0
git checkout -b hotfix/9.2.1
# Push to remote
git push -u origin hotfix/9.2.1Same process as release branch bugfixes:
git checkout hotfix/9.2.1
git checkout -b bugfix/LT-12345-critical-fix
# Make changes, commit, push, create PR-
Complete all fixes on the hotfix branch
-
Create the hotfix release tag:
git checkout hotfix/9.2.1 git tag -a v9.2.1 -m "Hotfix release 9.2.1" git push origin v9.2.1 -
Merge hotfix changes back to the current release branch and develop
For maintaining older versions (e.g., fixing bugs in version 9.0 when 9.2 is current):
# Create support branch from the old release tag
git checkout v9.0.0
git checkout -b support/9.0
git push -u origin support/9.0Process is similar to hotfixes, but hotfix branches are based on the support branch:
git checkout support/9.0
git checkout -b hotfix/9.0.1If you get merge failures when releasing:
- Resolve the conflicts locally
- Commit the resolution
- Push and continue with the release
# After resolving conflicts
git add .
git commit -m "Resolve merge conflicts for release"
git pushFieldWorks uses semantic versioning:
- Major (9.x.x): Breaking changes, major new features
- Minor (x.3.x): New features, backwards compatible
- Patch (x.x.1): Bug fixes, backwards compatible
- Pull Request Workflow - Standard PR process
- CONTRIBUTING.md - Getting started with contributions