aklivity/gitflow-changelog

Generates a CHANGELOG for repositories using a gitflow branching model (a long-running develop branch plus maintenance/support branches), placing each issue and pull request under the release it actually shipped in by walking git ancestry rather than trusting closed-at dates or timeline events.

View on GitHub

Trust Signals

Scorecard Score
not yet scored
Maintenance Recency
Stale
License
None
namedescriptionrequireddefault
ownerRepository owner.no${{ github.repository_owner }}
repoRepository name.no${{ github.event.repository.name }}
tokenGitHub token used to read issues, pull requests, and their events.no${{ github.token }}
refBranch or ref to generate the changelog for. Entries not reachable from this ref are dropped; entries reachable but not under any tag land in Unreleased.noHEAD
git-dirPath to a full clone of the repository (requires fetch-depth 0 — a shallow clone cannot answer ancestry questions). Defaults to the current working directory.no
cache-pathPath to the incremental events cache file. Pair with actions/cache using a stable key (not hash-based) so it is found and updated on every run.no.gitflow-changelog-cache.json
overrides-pathPath to a YAML file (in the consuming repo) mapping a broken/recorded commit sha to its replacement, for entries whose recorded commit no longer exists (e.g. after a history rewrite on another branch, or a squash merge that flattened it away). Keyed by sha rather than PR/issue number, so one entry covers a PR and any issue it closes (an issue auto-closed by a merged PR has its sha backfilled from that PR's own commit, so both always carry the identical sha). Auto-loaded from this default path if present — no workflow changes needed to start using it.no.gitflow-changelog-hash-overrides.yml
config-pathPath to a YAML file (in the consuming repo) holding changelog policy — tag-pattern, enhancement-labels, bug-labels, exclude-labels, format. Policy belongs in one file rather than repeated inputs at every call site, since it doesn't vary by branch or by which step (prepare vs. finalize) is running. The inputs below still exist as one-off overrides and take precedence over the file when set.no.gitflow-changelog.yml
upstream-cache-dirDirectory each configured upstream source (see the "upstream" key in config-path) is cloned into. Only used when the config declares at least one upstream source. Pair with actions/cache using a stable key (not hash-based, and not scoped to the current branch — the same upstream history is relevant regardless of which branch is generating a changelog) so the clone persists across runs: it's updated with a fetch on every run after the first, rather than re-cloning full history from scratch every time.no.gitflow-changelog-upstream
tag-patternRegular expression selecting which tags get their own changelog section (e.g. to exclude alpha/beta/rc pre-releases). Does not affect ancestry placement, only which tags are rendered as sections. Overrides tag-pattern in config-path; defaults to matching every tag if set in neither place.no
enhancement-labelsComma-separated labels categorized as "Implemented enhancements". Overrides enhancement-labels in config-path; defaults to "enhancement" if set in neither place.no
bug-labelsComma-separated labels categorized as "Fixed bugs". Overrides bug-labels in config-path; defaults to "bug" if set in neither place.no
exclude-labelsComma-separated labels excluded from the changelog entirely. Overrides exclude-labels in config-path; defaults to "duplicate,invalid,wontfix" if set in neither place.no
formatOutput renderer. Only "default" is available in v1. Overrides format in config-path; defaults to "default" if set in neither place.no
output-pathPath to write the generated changelog to.noCHANGELOG.md
namedescription
changelog-pathPath to the generated changelog file.