-
Notifications
You must be signed in to change notification settings - Fork 170
How to maintain Ruby OpenSSL
This document describes how I (rhe) manage ruby-openssl.git and make releases.
-
Feature releases are named as vX.Y.0 and meant to contain enhancements, including bugfixes, new features, and deprecations. Backwards-incompatible changes should only happen in major releases (i.e., when X is changed).
-
Maintenance releases are named as vX.Y.Z and can contain only bugfixes.
-
The following integration branches are used.
-
'master' contains commits that will go into the next feature release.
-
'maint' contains commits that will go into the next maintenance release for the latest feature release.
-
'maint-X.Y' contains commits that will go into the next maintenance release for the X.Y.0 feature release (X.Y is not the latest one).
-
-
At the point a release is created, 'master' must be a superset of 'maint', 'maint' must be a superset of 'maint-X.Y', 'maint-X.Y' must be a superset of 'maint-X.Y-1', and so on.
-
A bugfix should first land in the {branch tracking oldest supported version, branch where the bug was introduced} and be merged "upwards". Backporting should be avoided as much as possible. Strictly following this rule makes easy to check later which releases fixed the bug (e.g., by "git tag --contains").
A maintenance release is created from a maintenance branch described above. A feature release is created from 'master'.
-
Merge changes from even older maintenance branch.
$ git checkout maint; git merge maint-2.0
-
Bump the version number and write History.md entry.
$ vim ext/openssl/ossl_version.h openssl.gemspec $ vim History.md
-
Create an annotated tag.
$ git commit -am 'Ruby/OpenSSL 2.1.1' $ git tag v2.1.1 -sm 'Ruby/OpenSSL 2.1.1'
-
Update gh-pages branch, and push to github.com/ruby/openssl.git.
$ ./tool/update-gh-pages $ git push upstream maint master v2.1.1 gh-pages
-
Build the gem and upload it to rubygems.org.
$ gem build openssl.gemspec $ gem push openssl-2.1.1.gem
-
If it's a feature release, slide the branch names.
$ git branch -m maint maint-2.1 $ git branch maint master