fix(release): YT-20 changelog lists only commits since previous tag #66

Merged
David merged 1 commit from fix/release-notes-changelog-range-YT-20 into main 2026-05-31 19:50:14 +02:00
Owner

Fixes YT-20.

Problem

The create-release job built the release changelog from git describe --tags --abbrev=0 $"($tag)^", where $tag (e.g. v0.4.0) is derived from the release/* branch name. At the moment the job runs, that tag does not yet exist as a ref - the same workflow creates it later via the Forgejo releases API. The git describe call therefore failed, the else branch ran, and git log --oneline (no range) emitted the entire commit history. Every release listed all commits ever made instead of only those since the previous release.

Fix

Resolve the previous tag from HEAD^ instead of the not-yet-created $tag. HEAD is the merge commit just landed on main; the new tag has not been created yet, so the nearest reachable tag from HEAD^ is the previous release. The surrounding if/else is unchanged, so the first-release path (no prior tag) still falls through to the full git log --oneline without error. This matches the form already shipped in the sibling a8n-run repos.

Acceptance criteria

  • .forgejo/workflows/create-release.yml resolves the previous tag with git describe --tags --abbrev=0 HEAD^ instead of $"($tag)^".
  • A release cut after a prior tag lists only commits in <prev_tag>..HEAD, not the full history.
  • The first-release path (no prior tag) still produces the full git log --oneline and does not error.
  • No em-dash characters introduced; comment text uses a hyphen.

Note: the canonical template at ~/projects/a8n-run/governance/templates/forgejo-workflows/create-release.yml is still on the broken form and should be fixed separately to stop the regression (out of scope here).

Fixes YT-20. ## Problem The `create-release` job built the release changelog from `git describe --tags --abbrev=0 $"($tag)^"`, where `$tag` (e.g. `v0.4.0`) is derived from the `release/*` branch name. At the moment the job runs, that tag does not yet exist as a ref - the same workflow creates it later via the Forgejo releases API. The `git describe` call therefore failed, the `else` branch ran, and `git log --oneline` (no range) emitted the entire commit history. Every release listed all commits ever made instead of only those since the previous release. ## Fix Resolve the previous tag from `HEAD^` instead of the not-yet-created `$tag`. `HEAD` is the merge commit just landed on `main`; the new tag has not been created yet, so the nearest reachable tag from `HEAD^` is the previous release. The surrounding `if`/`else` is unchanged, so the first-release path (no prior tag) still falls through to the full `git log --oneline` without error. This matches the form already shipped in the sibling `a8n-run` repos. ## Acceptance criteria - [x] `.forgejo/workflows/create-release.yml` resolves the previous tag with `git describe --tags --abbrev=0 HEAD^` instead of `$"($tag)^"`. - [x] A release cut after a prior tag lists only commits in `<prev_tag>..HEAD`, not the full history. - [x] The first-release path (no prior tag) still produces the full `git log --oneline` and does not error. - [x] No em-dash characters introduced; comment text uses a hyphen. Note: the canonical template at `~/projects/a8n-run/governance/templates/forgejo-workflows/create-release.yml` is still on the broken form and should be fixed separately to stop the regression (out of scope here).
fix(release): resolve previous tag from HEAD^ for changelog range
All checks were successful
Check / fmt + clippy + build + tests (pull_request) Successful in 15s
Create release / Create release from merged PR (pull_request) Has been skipped
1211f2a9ef
The create-release job derived the previous tag with `git describe --tags --abbrev=0 $"($tag)^"`, but `$tag` (e.g. v0.4.0) does not exist as a ref when the job runs - this same workflow creates it later via the releases API. The describe call failed, the else branch ran, and `git log --oneline` emitted the entire history, so every release listed all commits ever made.

Resolve the previous tag from `HEAD^` instead. HEAD is the merge commit just landed on main and the new tag is not yet created, so the nearest reachable tag is the previous release. The first-release path (no prior tag) still falls through to the full log unchanged.

#YT-20
David merged commit dbc09053a1 into main 2026-05-31 19:50:14 +02:00
David deleted branch fix/release-notes-changelog-range-YT-20 2026-05-31 19:50:14 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
pandoras-box/youtrack-cli!66
No description provided.