Skip to content

Commit

Permalink
fix: fix previous release references
Browse files Browse the repository at this point in the history
  • Loading branch information
tvcsantos committed Jun 25, 2023
1 parent ff7f47c commit fbb605e
Show file tree
Hide file tree
Showing 5 changed files with 123 additions and 1 deletion.
79 changes: 79 additions & 0 deletions .github/fixtures/test-keep-a-changelog-links/cliff.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
# configuration file for git-cliff (0.1.0)

[changelog]
# changelog header
header = """
# Changelog\n
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).\n
"""
# template for the changelog body
# https://tera.netlify.app/docs/#introduction
body = """
{% if version %}\
{% if previous %}\
{% if previous.version %}\
## [{{ version | trim_start_matches(pat="v") }}](https://github.com/dummy/dummy/compare/{{ previous.version }}...{{ version }}) - {{ timestamp | date(format="%Y-%m-%d") }}
{% else %}\
## [{{ version | trim_start_matches(pat="v") }}](https://github.com/dummy/dummy/releases/tag/{{ version }}) - {{ timestamp | date(format="%Y-%m-%d") }}
{% endif %}\
{% endif %}\
{% else %}\
{% if previous %}\
{% if previous.version %}\
## [Unreleased](https://github.com/dummy/dummy/compare/{{ previous.version }}...HEAD)
{% else %}\
## [Unreleased]
{% endif %}\
{% else %}\
## [Unreleased]
{% endif %}\
{% endif %}\
{% for group, commits in commits | group_by(attribute="group") %}
### {{ group | upper_first }}
{% for commit in commits %}
- {{ commit.message | upper_first }}\
{% endfor %}
{% endfor %}\n
"""
# remove the leading and trailing whitespace from the template
trim = true
# changelog footer
footer = """
<!-- generated by git-cliff -->
"""

[git]
# parse the commits based on https://www.conventionalcommits.org
conventional_commits = true
# filter out the commits that are not conventional
filter_unconventional = true
# process each line of a commit as an individual commit
split_commits = false
# regex for parsing and grouping commits
commit_parsers = [
{ message = "^.*: add", group = "Added"},
{ message = "^.*: support", group = "Added"},
{ message = "^.*: remove", group = "Removed"},
{ message = "^.*: delete", group = "Removed"},
{ message = "^test", group = "Fixed"},
{ message = "^fix", group = "Fixed"},
{ message = "^.*: fix", group = "Fixed"},
{ message = "^.*", group = "Changed"},
]
# protect breaking changes from being skipped due to matching a skipping commit_parser
protect_breaking_commits = false
# filter out the commits that are not matched by commit parsers
filter_commits = true
# glob pattern for matching git tags
tag_pattern = "v[0-9]*"
# regex for skipping tags
skip_tags = "v0.1.0-beta.1"
# regex for ignoring tags
ignore_tags = ""
# sort the tags topologically
topo_order = false
# sort the commits inside sections by oldest/newest order
sort_commits = "oldest"
10 changes: 10 additions & 0 deletions .github/fixtures/test-keep-a-changelog-links/commit.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#!/usr/bin/env bash
set -e

GIT_COMMITTER_DATE="2021-01-23 01:23:45" git commit --allow-empty -m "feat: add feature 1"
git tag v0.1.0

GIT_COMMITTER_DATE="2021-01-24 01:23:46" git commit --allow-empty -m "feat: add feature 2"
git tag v0.2.0

GIT_COMMITTER_DATE="2021-01-25 01:23:47" git commit --allow-empty -m "fix: fix feature 1"
26 changes: 26 additions & 0 deletions .github/fixtures/test-keep-a-changelog-links/expected.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased](https://github.com/dummy/dummy/compare/v0.2.0...develop)

### Fixed

- Fix feature 1

## [v0.2.0](https://github.com/dummy/dummy/compare/v0.1.0...v0.2.0) - 2021-01-24

### Added

- Add feature 2

## [v0.1.0](https://https://github.com/dummy/dummy/releases/tag/v0.1.0) - 2021-01-23

### Added

- Add feature 1

<!-- generated by git-cliff -->
1 change: 1 addition & 0 deletions .github/workflows/test-fixtures.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ jobs:
- fixtures-name: test-limit-commits
- fixtures-name: test-skip-breaking-changes
- fixtures-name: test-split-commits
- fixtures-name: test-keep-a-changelog-links
steps:
- name: Checkout
uses: actions/checkout@v3
Expand Down
8 changes: 7 additions & 1 deletion git-cliff/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,11 @@ fn process_repository<'a>(
}
}

if release_index > 1 {
previous_release.previous = None;
releases[release_index].previous = Some(Box::new(previous_release));
}

// Add custom commit messages to the latest release.
if let Some(custom_commits) = &args.with_commit {
if let Some(latest_release) = releases.iter_mut().last() {
Expand All @@ -209,8 +214,9 @@ fn process_repository<'a>(

// Set the previous release if needed.
if args.latest || args.unreleased {
let sub = if args.latest { 2 } else { 1 };
if let Some((commit_id, version)) =
tags.len().checked_sub(2).and_then(|v| tags.get_index(v))
tags.len().checked_sub(sub).and_then(|v| tags.get_index(v))
{
let previous_release = Release {
commit_id: Some(commit_id.to_string()),
Expand Down

0 comments on commit fbb605e

Please sign in to comment.