Preparing a Release
Git Flow Release Workflow
This documentation outlines the process for preparing a release version using the Git Flow workflow.
Overview
Git Flow is a branching model that defines a strict branching structure designed around project releases. The release workflow helps maintain clean, organized code while preparing for production deployments.
Release Preparation Steps
-
Start a Release Branch
git flow release start <version>Creates a new release branch from
develop. Use semantic versioning (e.g., 1.2.0). - Prepare Release Changes
- Run
bump_version.pyscript
OR
- Update version numbers in the following files
pyproject.toml(lines3and17)src/brushsetmaker.dist-info/METADATA(line6)src/brushsetmaker/__init__.py(line2)git add .git commit -m 'bump version to <version>'
- Run
-
Finish the Release
git flow release finish <version>This will:
- Merge the release branch into
main - Tag the release with the version number
- Merge back into
develop - Delete the release branch
- Merge the release branch into
-
Push Changes
git push origin main git push origin develop git push --tags -
Build the Release Package
make build make packageThis will:
- Generate a
BrushsetMaker.appinbuild/brushsetmaker/macos/app/ - Generate a
BrushsetMaker.zipinbuild/brushsetmaker/macos/app/ - Generate a
BrushsetMaker-<version>.dmgindist/
- Generate a
- Create Release on Github
- Label the release as the version number
- Fill out the release notes with the changelog
- Upload the
.dmgand the.zipto the release assets - Rename the
.ziptoBrushsetMaker-<version>.zip
Best Practices
- Keep release branches short-lived (hours to days, not weeks)
- Only fix critical bugs on release branches
- Never start new features on a release branch
- Always tag releases with semantic version numbers
- Update documentation before finishing the release