Skip to content

Commit

Permalink
fix(changelog): fix missing commit fields in context (orhun#837)
Browse files Browse the repository at this point in the history
* feat(commit): add `raw_message` to `Commit`

* test(fixtures): add test generate all fields in conventional commits

* test(fixtures): add test do not discard missing fields in conventional
commits when reading from context

* docs(website): add `raw_message` fields to `context.md`
  • Loading branch information
dqkqd committed Oct 14, 2024
1 parent da1cb61 commit 3d96357
Show file tree
Hide file tree
Showing 11 changed files with 661 additions and 4 deletions.
35 changes: 35 additions & 0 deletions .github/fixtures/test-conventional-commit/cliff.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
[changelog]
# template for the changelog footer
header = """
# Changelog\n
All notable changes to this project will be documented in this file.
"""
# template for the changelog body
# https://keats.github.io/tera/docs/#introduction
body = """
{% for group, commits in commits | group_by(attribute="group") %}
## {{ group | striptags | trim | upper_first }}
{% for commit in commits %}
{% if commit.scope %}*({{ commit.scope }})* {% endif %}\
{% if commit.breaking %}[**breaking**]: {{ commit.breaking_description }}{% endif %}
{{ commit.message }}: {{ commit.body }}\
{% for footer in commit.footers %}
- {{ footer.token }}{{ footer.separator }} {{ footer.value }}\
{% endfor %}
{% endfor %}\
{% endfor %}\n
"""
# template for the changelog footer
footer = """
<!-- generated by git-cliff -->
"""

[git]
# parse the commits based on https://www.conventionalcommits.org
conventional_commits = true
# process each line of a commit as an individual commit
split_commits = false
commit_parsers = [
{ message = "^feat", group = "Features", default_scope = "app" },
{ message = "^fix" },
]
52 changes: 52 additions & 0 deletions .github/fixtures/test-conventional-commit/commit.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
#!/usr/bin/env bash
set -e

GIT_COMMITTER_DATE="2022-04-06 01:25:08" git commit --allow-empty -m "Initial commit"
GIT_COMMITTER_DATE="2022-04-06 01:25:09" git commit --allow-empty -m \
"feat(web): feature 1, breaking change in footer
Body feature 1
BREAKING CHANGE: breaking change description feature 1
Signed-off-by: user1 <user1@example.com>
Reviewed-by: user2
"

GIT_COMMITTER_DATE="2022-04-06 01:25:10" git commit --allow-empty -m \
"feat(web)!: feature 2, breaking chain in description
Body feature 2
Signed-off-by: user3 <user3@example.com>
"

GIT_COMMITTER_DATE="2022-04-06 01:25:11" git commit --allow-empty -m \
"feat!: feature 3, use default scope = app
Body feature 2
Signed-off-by: user3 <user3@example.com>
"

GIT_COMMITTER_DATE="2022-04-06 01:25:12" git commit --allow-empty -m \
"fix(scope): fix 1, use scope as group
Body fix 1
Fix: #1
"

GIT_COMMITTER_DATE="2022-04-06 01:25:13" git commit --allow-empty -m \
"fix(front-end): fix 2, no footer
Body fix 2
"

GIT_COMMITTER_DATE="2022-04-06 01:25:14" git commit --allow-empty -m \
"fix(front-end): fix 3 and 4, no body but footer
Fix: #3
Fix: #4
"

git tag v0.1.0
35 changes: 35 additions & 0 deletions .github/fixtures/test-conventional-commit/expected.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# Changelog

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

## Features

*(web)* [**breaking**]: breaking change description feature 1
feature 1, breaking change in footer: Body feature 1
- BREAKING CHANGE: breaking change description feature 1
- Signed-off-by: user1 <user1@example.com>
- Reviewed-by: user2

*(web)* [**breaking**]: feature 2, breaking chain in description
feature 2, breaking chain in description: Body feature 2
- Signed-off-by: user3 <user3@example.com>

*(app)* [**breaking**]: feature 3, use default scope = app
feature 3, use default scope = app: Body feature 2
- Signed-off-by: user3 <user3@example.com>

## Fix

*(scope)*
fix 1, use scope as group: Body fix 1
- Fix: #1

*(front-end)*
fix 2, no footer: Body fix 2

*(front-end)*
fix 3 and 4, no body but footer:
- Fix: #3
- Fix: #4

<!-- generated by git-cliff -->
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
[changelog]
# template for the changelog footer
header = """
# Changelog\n
All notable changes to this project will be documented in this file.
"""
# template for the changelog body
# https://keats.github.io/tera/docs/#introduction
body = """
{% for group, commits in commits | group_by(attribute="group") %}
## {{ group | striptags | trim | upper_first }}
{% for commit in commits %}
{% if commit.scope %}*({{ commit.scope }})* {% endif %}\
{% if commit.breaking %}[**breaking**]: {{ commit.breaking_description }}{% endif %}
{{ commit.message }}: {{ commit.body }}\
{% for footer in commit.footers %}
- {{ footer.token }}{{ footer.separator }} {{ footer.value }}\
{% endfor %}
{% endfor %}\
{% endfor %}\n
"""
# template for the changelog footer
footer = """
<!-- generated by git-cliff -->
"""

[git]
# parse the commits based on https://www.conventionalcommits.org
conventional_commits = true
# process each line of a commit as an individual commit
split_commits = false
commit_parsers = [
{ message = "^feat", group = "Features", default_scope = "app" },
{ message = "^fix" },
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
#!/usr/bin/env bash
set -e

GIT_COMMITTER_DATE="2022-04-06 01:25:08" git commit --allow-empty -m "Initial commit"
GIT_COMMITTER_DATE="2022-04-06 01:25:09" git commit --allow-empty -m \
"feat(web): feature 1, breaking change in footer
Body feature 1
BREAKING CHANGE: breaking change description feature 1
Signed-off-by: user1 <user1@example.com>
Reviewed-by: user2
"

GIT_COMMITTER_DATE="2022-04-06 01:25:10" git commit --allow-empty -m \
"feat(web)!: feature 2, breaking chain in description
Body feature 2
Signed-off-by: user3 <user3@example.com>
"

GIT_COMMITTER_DATE="2022-04-06 01:25:11" git commit --allow-empty -m \
"feat!: feature 3, use default scope = app
Body feature 2
Signed-off-by: user3 <user3@example.com>
"

GIT_COMMITTER_DATE="2022-04-06 01:25:12" git commit --allow-empty -m \
"fix(scope): fix 1, use scope as group
Body fix 1
Fix: #1
"

GIT_COMMITTER_DATE="2022-04-06 01:25:13" git commit --allow-empty -m \
"fix(front-end): fix 2, no footer
Body fix 2
"

GIT_COMMITTER_DATE="2022-04-06 01:25:14" git commit --allow-empty -m \
"fix(front-end): fix 3 and 4, no body but footer
Fix: #3
Fix: #4
"

git tag v0.1.0
Loading

0 comments on commit 3d96357

Please sign in to comment.