Skip to content
Chris Markiewicz edited this page Dec 3, 2019 · 1 revision

0. Assumptions

For the sake of generality, assume an environment variable VERSION of the form <MAJOR>.<MINOR>.<PATCH>.

1. Checkout release branch based off of latest master

git fetch upstream
git checkout upstream/master -b rel/$VERSION

2. Update changelog

tools/update_changes.sh $VERSION

Inspect the git diff and manually make changes as needed. Changelog entries can often be improved, and release notes added. Sort the changelog entries by rough order of how much a user should care: FIX, ENH, DOC, STY, MNT, CI.

git add CHANGELOG.md
git commit -m 'DOC: Update changelog'

3. Update Zenodo

tools/prep_zenodo.py

For Zenodo, names should be in Last, First ordering. If a contributor uses multiple email addresses, you may need to update the .mailmap, which affects the git shortlog outputs and thus the Zenodo ordering.

If there are any mailmap changes, revert the Zenodo JSON and re-run:

git checkout .zenodo.json
tools/prep_zenodo.py

When satisfied, commit:

git add .zenodo.json .mailmap
git commit -m 'MNT: Update Zenodo, mailmap'

4. Push to upstream

git push -u upstream rel/$VERSION

Open a new PR: https://github.com/bids-standard/pybids/pull/new/rel/$VERSION

Here is a good place to alert new contributors that you're adding them to the Zenodo, and give them a chance to object or add their affiliation/ORCID.

Once the PR is finalized, make sure the changelog date is still valid, and merge.

5. Tag and release

Fetch upstream and tag upstream/master:

git fetch upstream
git tag -a -s $VERSION upstream/master

-a is required to make it an annotated tag and make git-describe, and other tools that depend on it, happy.

-s signs the tag with a GPG key. This is optional.

Use the changelog (minus the markdown syntax) as the tag message. e.g.,

Version 0.10.0 (December 03, 2019)

New feature release in the 0.10.x series.

This release removes Python 2 support.

* ENH: Helpful error for db argument mismatch, and add classmethod load_from_db (#547)
* ENH: Add Resample transformation (#373)
* ENH: Save BIDSLayout + Derivatives to folder (with init arguments) (#540)
* ENH: Adds support for NONE and ANY query Enums (#542)
* ENH: Transformation-related improvements (#541)
* ENH: FEMA contrasts (#520)
* STY: Minor PEP8 Fixes (#545)
* MNT: Various (#543)
* MNT: Remove Python 2.7 support (#524)
* CI: Configure Circle Artifact Redirector (#544)

Push the tag:

git push upstream $VERSION

7. Make a GitHub release

Draft a new release, and add the version as both the tag version and the release title.

Split the changelog into a description, like:

## Release Notes

New feature release in the 0.10.x series.

This release removes Python 2 support.

## Changes

* ENH: Helpful error for db argument mismatch, and add classmethod load_from_db (#547)
* ENH: Add Resample transformation (#373)
* ENH: Save BIDSLayout + Derivatives to folder (with init arguments) (#540)
* ENH: Adds support for NONE and ANY query Enums (#542)
* ENH: Transformation-related improvements (#541)
* ENH: FEMA contrasts (#520)
* STY: Minor PEP8 Fixes (#545)
* MNT: Various (#543)
* MNT: Remove Python 2.7 support (#524)
* CI: Configure Circle Artifact Redirector (#544)

8. Add the Zenodo badge

After a couple minutes, the Zenodo page will update, and you can click on the badge to get the Markdown.

Edit the release and add it before ## Release Notes.