From 658ff96160187b4a465903d3fd5ef3ef2b1f46b3 Mon Sep 17 00:00:00 2001 From: Remi Gau Date: Mon, 27 Nov 2023 17:43:30 +0100 Subject: [PATCH] update release protocol and version name --- CITATION.cff | 2 +- CONTRIBUTING.md | 2 ++ Release_Protocol.md | 47 ++++++++++++++++++++------------ mkdocs.yml | 2 +- release_images/merge_commit.png | Bin 0 -> 16751 bytes 5 files changed, 33 insertions(+), 20 deletions(-) create mode 100644 release_images/merge_commit.png diff --git a/CITATION.cff b/CITATION.cff index 5001ecd5b2..f3eea22579 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -7,7 +7,7 @@ title: bids-specification abstract: The Brain Imaging Data Structure (BIDS) is a simple and intuitive way to organize and describe data. -version: v1.10.0-dev +version: 1.10.0-dev license: CC-BY-4.0 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 882e852455..9e50a5b751 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -698,6 +698,8 @@ the `master` branch of the specification via a "Merge commit" see the [GitHub help page](https://help.github.com/en/articles/about-merge-methods-on-github) for more information on merge methods). +![merge-commit](release_images/merge_commit.png "merge-commit") + Note that for pull requests starting with `REL:`, no changelog is generated. To exclude pull requests from showing up in the changelog, they have to be labeled with diff --git a/Release_Protocol.md b/Release_Protocol.md index 30b5d2b429..ef653c328e 100644 --- a/Release_Protocol.md +++ b/Release_Protocol.md @@ -8,10 +8,14 @@ The protocol assumes that you have a [fork](https://help.github.com/en/articles/ of the bids-standard/bids-specification repository and have [cloned](https://help.github.com/en/articles/cloning-a-repository) your fork locally to a directory called `bids-specification`. -NOTE: Before you start a release, you have to ensure that the automatically generated changelog is -**up to date**. See the relevant [section in CONTRIBUTING.md](CONTRIBUTING.md#how-is-the-changelog-generated) -for further information. In practice this means ensuring that the most recently merged pull request was -merged into the `master` branch using the "Merge commit" option. +### 0. Cleaning up the changelog + +Before you start a release, you have to ensure that the automatically generated changelog is **up to date**. +See the relevant [section in CONTRIBUTING.md](CONTRIBUTING.md#how-is-the-changelog-generated) for further information. +In practice this means ensuring that the most recently merged pull request +was merged into the `master` branch using the "Merge commit" option. + +![merge-commit](release_images/merge_commit.png.png "merge-commit") ### 1. Fetch the latest version of the [master branch of the BIDS-specification](https://github.com/bids-standard/bids-specification/tree/master) @@ -48,13 +52,13 @@ Update the version in CITATION.cff. Change the "Unreleased" heading in [src/CHANGES.md](https://github.com/bids-standard/bids-specification/blob/master/src/CHANGES.md) -to `v`, and link to the target ReadTheDocs URL. +to ``, and link to the target ReadTheDocs URL. If the target release date is known, include the date in YYYY-MM-DD in parentheses after the link. ```Diff - ## Unreleased -+ ## [v1.2.0](https://bids-specification.readthedocs.io/en/v1.2.0/) (2019-03-04) ++ ## [1.2.0](https://bids-specification.readthedocs.io/en/1.2.0/) (2019-03-04) ``` The date can be changed or added later, so accurate prediction is not necessary. @@ -63,7 +67,7 @@ Remove the `-dev` from the version in [mkdocs.yml](https://github.com/bids-standard/bids-specification/blob/master/mkdocs.yml) configuration, so the title will be correct for the released specification. If the version preceding the `-dev` is not the target version, update the version as well. -In the figure below, we update `v1.2.0-dev` to `v1.2.0`. +In the figure below, we update `1.2.0-dev` to `1.2.0`. ![dev-to-stable](release_images/site_name_release_1.2dev-1.2.png "dev-to-stable") Additionally, implement the same change in the version name perform above in the `src/schema/BIDS_VERSION` file. @@ -94,8 +98,9 @@ make update_contributors #### 2.3 Update the previous version URLs -Please change the previous version links from GitHub to ReadTheDocs. -In the figure below, we update v1.2.2. +In `src/CHANGES.md`, +please change the previous version links from GitHub to ReadTheDocs. +In the figure below, we update 1.2.2. ![github-to-rtd](release_images/GitHub_to_RTD_spec_rendering.png "github-to-rtd") #### 2.4 Update the Changelog @@ -115,7 +120,7 @@ discrepancies is reduced. ```Shell git add src/CHANGES.md mkdocs.yml src/appendices/contributors.md src/schema/BIDS_VERSION -git commit -m 'REL: v1.2.0' +git commit -m 'REL: 1.2.0' git push -u upstream rel/1.2.0 ``` @@ -123,7 +128,7 @@ git push -u upstream rel/1.2.0 **Important notes:** -1. The pull request title **must** be named "REL: vX.Y.Z" (for example, "REL: v1.2.0") +1. The pull request title **must** be named "REL: X.Y.Z" (for example, "REL: 1.2.0") 1. The pull request **must** get a GitHub label called `exclude-from-changelog` **This will open a period of discussion for 5 business days regarding if we are ready to release.** @@ -158,11 +163,11 @@ The date should be placed after the link to the versioned URL. For example: ```Diff -- ## [v1.2.0](https://bids-specification.readthedocs.io/en/v1.2.0/) -+ ## [v1.2.0](https://bids-specification.readthedocs.io/en/v1.2.0/) (2019-03-04) +- ## [1.2.0](https://bids-specification.readthedocs.io/en/1.2.0/) ++ ## [1.2.0](https://bids-specification.readthedocs.io/en/1.2.0/) (2019-03-04) ``` -Verify that the pull request title matches "REL: vX.Y.Z" and merge the pull request. +Verify that the pull request title matches "REL: X.Y.Z" and merge the pull request. ### 6. Get the built PDF and `CITATION.cff` file @@ -190,8 +195,8 @@ To do this, `fetch` the current state of `upstream` (see step 1), tag `upstream/ ```Shell git fetch upstream -git tag -a -m "v1.2.0 (2019-03-04)" v1.2.0 upstream/master -git push upstream v1.2.0 +git tag -a -m "1.2.0 (2019-03-04)" 1.2.0 upstream/master +git push upstream 1.2.0 ``` There are four components to the tag command: @@ -216,7 +221,7 @@ Click [Draft a new release](https://github.com/bids-standard/bids-specification/ ![GH-release-2](release_images/GH-release_2.png "GH-release-2") -Set the tag version and release title to "vX.Y.Z", and paste the current changelog as the +Set the tag version and release title to "X.Y.Z", and paste the current changelog as the description: ![GH-release-3](release_images/GH-release_3.png "GH-release-3") @@ -229,8 +234,14 @@ for `stable` and the most recent tag. ### 9. Edit the mkdocs.yml file site_name to set a new development version -Please commit to `master` with the title `REL: -dev`. +Please open a pull request and create a merge commit to `master` with the title `REL: -dev`. + +![merge-commit](release_images/merge_commit.png.png "merge-commit") + This should be the first commit in the new version. + +This will recent the URL that were [manually changed before in step 2.3](#2.3-update-the-previous-version-URLs) + This process is illustrated below. ![stable-to-dev](release_images/site_name_release_1.2-1.3dev.png "stable-to-dev") diff --git a/mkdocs.yml b/mkdocs.yml index 97d556d179..82badc4288 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,4 +1,4 @@ -site_name: Brain Imaging Data Structure v1.10.0-dev +site_name: Brain Imaging Data Structure 1.10.0-dev site_url: https://bids-specification.readthedocs.io/en/stable/ repo_url: https://github.com/bids-standard/bids-specification nav: diff --git a/release_images/merge_commit.png b/release_images/merge_commit.png new file mode 100644 index 0000000000000000000000000000000000000000..3df09babf9b597040b7c469355e06f98b265913a GIT binary patch literal 16751 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

?Y&G3nZ66uB$Rde`w;{ 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 XPPdlA5rKY@0*0E3*0UOA>!|++H!BB^ literal 0 HcmV?d00001