From 5c5b573ebf26e5b1af1735af01a7e574ee735fd3 Mon Sep 17 00:00:00 2001 From: James Couball Date: Wed, 22 Jan 2020 09:16:08 -0800 Subject: [PATCH] Add James Couball to the maintainers list. Add instructions for releasing the git gem Signed-off-by: James Couball --- MAINTAINERS.md | 5 +++-- RELEASING.md | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+), 2 deletions(-) create mode 100644 RELEASING.md diff --git a/MAINTAINERS.md b/MAINTAINERS.md index 43b76f74..a78a67d6 100644 --- a/MAINTAINERS.md +++ b/MAINTAINERS.md @@ -1,8 +1,9 @@ # Maintainers -When making changes to the system, this file tells you who needs to review your patch - you need at least two maintainers to provide a :+1: on your pull request. +When making changes in this repository, one of the maintainers below must review and approve your pull request. ### Maintainers * [Per Lundberg](https://github.com/perlun) -* [Vern Burton](https://github.com/tarcinil) \ No newline at end of file +* [Vern Burton](https://github.com/tarcinil) +* [James Couball](https://github.com/jcouball) \ No newline at end of file diff --git a/RELEASING.md b/RELEASING.md new file mode 100644 index 00000000..af99786f --- /dev/null +++ b/RELEASING.md @@ -0,0 +1,57 @@ +# How to release a new git.gem + +Releasing a new version of the `git` gem requires these steps: + * [Prepare the release](#prepare-the-release) + * [Create a GitHub release](#create-a-github-release) + * [Build and release the gem](#build-and-release-the-gem) + +These instructions use an example where the current release version is `1.5.0` +and the new release version to be created is `1.6.0.pre1`. + +## Prepare the release + +From a fork of ruby-git, create a PR containing changes to (1) bump the +version number, (2) update the CHANGELOG.md, and (3) tag the release. + + * Bump the version number in lib/git/version.rb following [Semantic Versioning](https://semver.org) + guidelines + * Add a link in CHANGELOG.md to the release tag which will be created later + in this guide + * Create a new tag using [git-extras](https://github.com/tj/git-extras/blob/master/Commands.md#git-release) + `git release` command + * For example: `git release v1.6.0.pre1` + * These should be the only changes in the PR + * An example of these changes for `v1.6.0.pre1` can be found in [PR #435](https://github.com/ruby-git/ruby-git/pull/435) + * Get the PR reviewed, approved and merged to master. + +## Create a GitHub release + +On [the ruby-git releases page](https://github.com/ruby-git/ruby-git/releases), +select `Draft a new release` + + * Select the tag corresponding to the version being released `v1.6.0.pre1` + * The Target should be `master` + * For the release description, use the output of [changelog-rs](https://github.com/perlun/changelog-rs) + * Since the release has not been created yet, you will need to supply + `changeling-rs` with the current release tag and the tag the new release + is being created from + * For example: `changelog-rs . v1.5.0 v1.6.0.pre1` + * Copy the output, omitting the tag header `## v1.6.0.pre1` and paste into + the release description + * The release description can be edited later if needed + * Select the appropriate value for `This is a pre-release` + * Since `v1.6.0.pre1` is a pre-release, check `This is a pre-release` + +## Build and release the gem + +Clone [ruby-git/ruby-git](https://github.com/ruby-git/ruby-git) directly (not a +fork) and ensure your local working copy is on the master branch + + * Verify that you are not on a fork with the command `git remote -v` + * Verify that the version number is correct by running `rake -T` and inspecting + the output for the `release[remote]` task + +Build the git gem and push it to rubygems.org with the command `rake release` + + * Ensure that your `gem sources list` includes `https://rubygems.org` (in my + case, I usually have my work’s internal gem repository listed)