Prepares and publishes new releases of the ruby-git gem including version bumps, changelog updates, tagging, and gem publishing. Use when preparing a release or checking release readiness.
This workflow describes how releases are managed for the ruby-git gem.
Attach this file to your Copilot Chat context when preparing a release, verifying release readiness, or answering questions about versioning and publishing flow.
Releases are fully automated via
release-please and the
.github/workflows/release.yml workflow:
mainlib/git/version.rb and regenerates CHANGELOG.mdrubygems/release-gemKey config files:
| File | Purpose |
|---|---|
.release-please-config.json | Release-please settings (release type, changelog sections, versioning strategy) |
.release-please-manifest.json | Tracks the current released version |
lib/git/version.rb | Version constant (updated automatically by release-please) |
CHANGELOG.md | Release history (updated automatically by release-please) |
The versioning strategy is prerelease with beta as the prerelease type. The
config also sets bump-minor-pre-major: true and bump-patch-for-minor-pre-major: true.
The only thing developers need to do for releases is use conventional commit messages. release-please determines the version bump from commit types:
fix: → patch bumpfeat: → minor bumpfeat!: or BREAKING CHANGE: footer → major bumpEverything else (version bump, changelog, tag, gem push) is automated. Do not
manually edit lib/git/version.rb or CHANGELOG.md.
Before a maintainer merges a release PR:
Ensure CI passes on main:
bundle exec rake default
Review unreleased changes since last tag:
git log $(git describe --tags --abbrev=0)..HEAD --oneline
Check for open blockers:
gh issue list --label "bug" --state open
Review the release PR — verify the auto-generated changelog and version bump look correct.
lib/git/version.rb — release-please does thisCHANGELOG.md — it is auto-generated from commitsgem push — the workflow handles publishing# View recent tags
git tag -l --sort=-v:refname | head -10
# List commits since last release
git log $(git describe --tags --abbrev=0)..HEAD --oneline
# Compare with previous release
git diff $(git describe --tags --abbrev=0)..HEAD
# Check current version
ruby -e "require_relative 'lib/git/version'; puts Git::VERSION"
# View release-please config
cat .release-please-config.json | jq .
# Build gem locally (for testing only)
bundle exec rake build
gem install pkg/git-*.gem