Release Process
This page describes the process of making a release of OpenEXR and/or Imath.
Some important notes about the development process:
All development happens in the master branch. PR's are merged into the master branch.
OpenEXR enforces a linear commit history. The GiHub repo allows squash merging and rebase merging but does not allow merge commits.
PR's are typically merged via "Squash and merge". This ensures that each PR ultimately corresponds to a single commit in the history. GitHub appends the PR number to the commit title upon squash, which makes this relationship easy to see: "Remove dead code in ImfB44Compressor.cpp (#1024)"
Each major and minor release goes into a branch named "
RB
", e.g.RB-3.0
. Each release is a tag starting with lowercase 'v
', e.g.v3.0.4
. Patch releases are tags along the correspondingRB-
branch.
Major/Minor Release (e.g. v3.1.0
)
This assumes that a new branch comes off of master.
Create a branch off of master called
RB-<major>.<minor>
Follow the steps below for a Patch Release.
Patch Release (e.g. v3.0.4
)
This assumes that changes on the master branch need to be merged into the release branch, e.g. RB-3.0
.
Pick dates for feature freeze, code freeze, and release.
Create a
v3.0.4
GitHub PR/Issue labelAdd the label to PRs that should go into the release.
In your fork of the main repo, on branch
RB-3.0
, createv3.0.4-rc
branch:% git checkout RB-3.0
% git pull
% git checkout b -v3.0.4 rc
Git cherry-pick appropriate commits from master branch. Since we "Squash and Merge" PR's on master, there should be a one-to-one correspondence between commits and PRs
Edit CHANGES.md and add release notes that summarize the changes. List the PRs with links. Submit as a separate commit so that this appears as a distinct entry in the commit history.
Bump the version in
CMakeLists.txt
. Submit as a separate commit so that this appears as a distinct entry in the commit history.Push the
v3.0.4-rc
branch and create a PR. Note this is into theRB-3.0
branchWait for review.
Merge the PR with "Rebase and Merge"
Create tag
v3.0.4-rc1
Test.
Download and build.
Confirm fixes.
Confirm version number.
Run tests as standalone.
Draft GitHub release. Use release notes from CHANGES.md.
On the release date, publish the release.
Update the "
release
" branch. In a clone of the main repo, check out the release branch and get mergev3.0.4
. Git push.Send announcement to
openexr-dev@lists.aswf.io
Merge the release notes into the master branch. In your fork:
% git checkout master
% git merge upstream/master
% git checkout -b v3.0.4
% git cherry-pick release notes, any other changes
Submit PR
Update website
Update master release version number.