Skip to main content

Config-driven branch and release helpers for Git repositories

Project description

repo-release-tools

repo-release-tools keeps release policy boring in the best possible way.

Use it from GitHub Marketplace when you want CI to validate branch names, commit subjects, and changelog policy. Install it from PyPI when you want a local CLI, hook integration, version bumps, and release-branch automation.

Choose your entry point

Use the GitHub Action for CI policy checks

Choose the action if you want pull requests and pushes to fail fast when a repo drifts from your release policy.

  • validates branch names such as feat/add-parser
  • validates Conventional Commit subjects
  • validates changelog policy in CI
  • optionally checks that the working tree stays clean
  • can run rrt doctor as a pre-release health gate
- uses: actions/checkout@v6
  with:
    fetch-depth: 0

- uses: Anselmoo/repo-release-tools@v1.0.0
  with:
    check-branch-name: "true"
    check-commit-subject: "true"
    check-changelog: "true"

See the full action guide: https://github.com/Anselmoo/repo-release-tools/blob/main/docs/github-action.md

Use the Python package for local workflow automation

Choose the package if you want the developer-side tools: branch helpers, version bumps, config inspection, pre-commit hooks, and release automation.

pip install repo-release-tools
rrt init
rrt branch new feat "add parser"
rrt git commit "add parser"
rrt git doctor
rrt bump patch

Or run the CLI without installing it permanently:

uvx repo-release-tools branch new feat "add parser"

For basic versioning, bump and ci-version can run without [tool.rrt] by auto-detecting root-level pyproject.toml, package.json, and Cargo.toml. If multiple version files are found, they are updated together. Explicit config is for the nice extras: grouped releases, changelog paths, release branches, lock commands, generated files, and custom patterns.

Changelog workflows

The same project can be used in two release styles. Pick the one that matches how your repository actually lands changes.

Workflow Best for Hook behavior Action changelog-strategy: auto rrt bump default
incremental (default) teams that maintain changelog entries during development rrt-update-unreleased and rrt-changelog stay active resolves to per-commit auto
squash repositories that squash many commits into one PR merge changelog write/check hooks skip changelog enforcement resolves to release-only generate

Minimal config:

[tool.rrt]
release_branch = "release/v{version}"
changelog_file = "CHANGELOG.md"
changelog_workflow = "incremental"  # or "squash"

[[tool.rrt.version_targets]]
path = "pyproject.toml"
kind = "pep621"

Native config is also supported in package.json ("rrt": { ... }) and Cargo.toml ([package.metadata.rrt] / [workspace.metadata.rrt]). Go repos should use .rrt.toml or .config/rrt.toml.

What the project includes

  • rrt CLI for branches, bumps, config inspection, and Git helpers
  • rrt-hooks for pre-commit, lefthook, and CI validation
  • a reusable GitHub Action in action.yml
  • docs for branch policy, hook setup, and release workflows

Start with the doc that matches your task

License

repo-release-tools is released under the MIT License.

Some workflow ideas were initially inspired by joseluisq/gitnow, but the rrt git surface is intentionally narrower and reshaped around conventional branching, safe commits, and release automation.

Built with ❤️ for safe, simple release automation.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

repo_release_tools-1.0.0.tar.gz (60.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

repo_release_tools-1.0.0-py3-none-any.whl (71.0 kB view details)

Uploaded Python 3

File details

Details for the file repo_release_tools-1.0.0.tar.gz.

File metadata

  • Download URL: repo_release_tools-1.0.0.tar.gz
  • Upload date:
  • Size: 60.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for repo_release_tools-1.0.0.tar.gz
Algorithm Hash digest
SHA256 a07ecd97cf4f8d2039016b91738fc1b5b634f3e754b15612028fa49c9abf3dca
MD5 f9369cb5d4e151a48a1073dd737f2756
BLAKE2b-256 dea8b46d0de0a9fbaa69851e1068e18953010c5bcd4ed786c5813e629c8499d9

See more details on using hashes here.

Provenance

The following attestation bundles were made for repo_release_tools-1.0.0.tar.gz:

Publisher: cicd.yml on Anselmoo/repo-release-tools

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file repo_release_tools-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for repo_release_tools-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 115dab4ac7c86bc2320b2406b92739261eb8256c7eace6fbd4e4fcd11be9ca2c
MD5 8a709c241f0f1c893f374898c665a673
BLAKE2b-256 b46d8dc7962df6f48173f17e5da8658018f177a7a539b769d7612ab2350b54d3

See more details on using hashes here.

Provenance

The following attestation bundles were made for repo_release_tools-1.0.0-py3-none-any.whl:

Publisher: cicd.yml on Anselmoo/repo-release-tools

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page