Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions MAINTAINERS.md
Original file line number Diff line number Diff line change
@@ -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)
* [Vern Burton](https://github.com/tarcinil)
* [James Couball](https://github.com/jcouball)
57 changes: 57 additions & 0 deletions RELEASING.md
Original file line number Diff line number Diff line change
@@ -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`
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should the tag really be made in the actual PR? This will work but only as long as we are strict with using --ff-only-style merging (fast forward merges without merge commits).

The other option would be to tag it once the PR is merged instead.

* 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
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's also possible to have multiple remotes in a git working copy; this is how I typically do it both at work. But I'm not sure it plays that well with the rake release command, so feel free to keep this like it's phrased if it works best for you that way.


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)