pyxem / kikuchipy

Toolbox for analysis of electron backscatter diffraction (EBSD) patterns
https://kikuchipy.org
GNU General Public License v3.0
80 stars 30 forks source link

Choose "semantic branching model" as release branching model #104

Closed hakonanes closed 4 years ago

hakonanes commented 4 years ago

Is your feature request related to a problem? Please describe. We need a branching model which eases releasing new features and patches.

Describe the solution you'd like After considering HyperSpy's three RELEASE_next_major/minor/patch branches, and the branching model of pyXem/scikit-image/etc. with a master and version branches, I like a version of the latter: https://dev-cafe.github.io/branching-model/. Everything is nicely explained in that link, with a link at the start to semver.org. In short, from the link above:

Branch semantics 1. master collects changes towards the next major release. 2. release/X.Y branches collect changes towards the next minor release. 3. release/X.Y.Z branches collect changes towards the next patch release. 4. New features are directed either towards master or towards release/X.Y branches. 5. Patch release branches release/X.Y.Z never receive new features, they only receive bugfixes.

Bugfixes 1. Bugfixes can be directed either towards release/X.Y.Z, or release/X.Y, or master, depending on the intent. 2. Bugfixes directed towards release/X.Y.Z require to bump the patch number, signalled by creating a new tag. 3. Important bugfixes in a given release/X.Y.Z can, if necessary, be ported to release/X.Y and further to master by merging. 4. Important bugfixes in master can, if necessary, be ported to release/X.Y and release/X.Y.Z by cherry picking.

The above link should be included in the contributing guide, along with explanations of which branch to branch off of for features/bugfixes for contributors.

hakonanes commented 4 years ago

When branch release/X.Y is ready for release, a tag X.Y is made following GitHub's guide on creating release. This will then (I believe and hope) make Travis CI check out the release, and a deploy stage, explained in their documentation, will then upload a distribution of the package to pypi (and conda in the future).

hakonanes commented 4 years ago

Scikit-image's realease guide is detailed and thorough. We should implement a step-by-step guide ourselves based on theirs.

hakonanes commented 4 years ago

Realise this is overly complex for where we are now with two contributors... :sweat_smile: For now, we'll push everything new to the master branch and create release tags from master.