Skip to content

Altinity/RelEasy

RelEasy

RelEasy ports features and PRs onto a stable base branch (a tag or commit you pin to), one cherry-picked port branch + PR at a time — a resumable alternative to rebasing long-lived branches. One machine can drive several porting projects at once.

This page is a quick start. For the full picture, see docs/.

Install

pip install -e .
export RELEASY_GITHUB_TOKEN="ghp_..."   # needs repo scope (+ project, to sync a board)

Set up a project

Your base branch (e.g. antalya-26.3) must already exist on the origin remote.

1. Scaffold it. Use one directory per project:

mkdir -p ~/work/antalya-26.3 && cd ~/work/antalya-26.3
releasy new --target-branch antalya-26.3 --project antalya

This writes two files side by side:

  • config.yaml — stable settings (origin remote, push, AI).
  • antalya-26.3.session.yamlwhat to port (named after the target branch).

2. Edit config.yaml. Set your origin remote, and push: true once you want RelEasy to push branches and open PRs (leave it off to keep everything local while you try things out):

origin:
  remote: git@github.com:Altinity/ClickHouse.git
push: true

3. Edit the session file. Say what to port — by label, explicit PR URLs, or groups:

pr_sources:
  by_labels:
    - labels: ["forward-port", "v26.3"]
      merged_only: true
  include_prs:
    - https://github.com/Altinity/ClickHouse/pull/1500

Port, resolve, repeat

releasy run        # discover PRs, cherry-pick each onto its own branch, open PRs

For every PR or group, RelEasy makes a feature/<base>/<id> branch off the base, cherry-picks the merge commit(s), and — with push: true — opens a PR into the base.

Hit a conflict? The run stops and names the branch. Resolve it in the work-dir repo, then:

releasy continue   # mark the conflict resolved
releasy run        # resume with the remaining PRs

(Set ai_resolve.enabled: true in config.yaml to let Claude attempt conflicts for you.)

Keep open PRs healthy as the target branch moves and CI runs:

releasy refresh                  # re-sync status; catch upstream merges/closes
releasy refresh --merge-target   # also merge the moved target into each PR
releasy status                   # see where everything stands

Running several projects? Each directory has its own config.yaml; releasy list shows them all.

Cut a release

When the base branch is ready to ship, draft the GitHub release notes:

releasy draft-release --from v26.1.6.6-stable --to antalya-26.3 --name v26.1.6.20001.altinityantalya

This collects the PRs merged into the target branch in the --from..--to window (one GitHub query), drops forward-ports, classifies each by its Changelog category, and creates a draft release on origin (its URL is printed). Pass --prs <url> ... to draft from an explicit PR set instead, or -o notes.md to write the markdown to a file rather than publishing. Full flags: docs/commands.md.

Learn more

License

See LICENSE.

About

No description, website, or topics provided.

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors