Skip to content

Commit bbae8e0

Browse files
authoredMar 19, 2024
feat(changelog): expose commits sha1, author and author_email in changelog tree (fix #987) (#1013)
1 parent c8a9008 commit bbae8e0

File tree

3 files changed

+27
-5
lines changed

3 files changed

+27
-5
lines changed
 

‎commitizen/changelog.py

+6-1
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,12 @@ def process_commit_message(
200200
changes: dict[str | None, list],
201201
change_type_map: dict[str, str] | None = None,
202202
):
203-
message: dict = parsed.groupdict()
203+
message: dict = {
204+
"sha1": commit.rev,
205+
"author": commit.author,
206+
"author_email": commit.author_email,
207+
**parsed.groupdict(),
208+
}
204209

205210
if processed := hook(message, commit) if hook else message:
206211
messages = [processed] if isinstance(processed, dict) else processed

‎docs/customization.md

+3
Original file line numberDiff line numberDiff line change
@@ -505,6 +505,9 @@ Each `Change` has the following fields:
505505
| ---- | ---- | ----------- |
506506
| scope | `str | None` | An optional scope |
507507
| message | `str` | The commit message body |
508+
| sha1 | `str` | The commit `sha1` |
509+
| author | `str` | The commit author name |
510+
| author_email | `str` | The commit author email |
508511

509512
!!! Note
510513
The field values depend on the customization class and/or the settings you provide

‎tests/test_changelog.py

+18-4
Original file line numberDiff line numberDiff line change
@@ -1084,10 +1084,24 @@ def test_generate_tree_from_commits(gitcommits, tags, merge_prereleases):
10841084
tree = changelog.generate_tree_from_commits(
10851085
gitcommits, tags, parser, changelog_pattern, merge_prerelease=merge_prereleases
10861086
)
1087-
if merge_prereleases:
1088-
assert tuple(tree) == COMMITS_TREE_AFTER_MERGED_PRERELEASES
1089-
else:
1090-
assert tuple(tree) == COMMITS_TREE
1087+
expected = (
1088+
COMMITS_TREE_AFTER_MERGED_PRERELEASES if merge_prereleases else COMMITS_TREE
1089+
)
1090+
1091+
for release, expected_release in zip(tree, expected):
1092+
assert release["version"] == expected_release["version"]
1093+
assert release["date"] == expected_release["date"]
1094+
assert release["changes"].keys() == expected_release["changes"].keys()
1095+
for change_type in release["changes"]:
1096+
changes = release["changes"][change_type]
1097+
expected_changes = expected_release["changes"][change_type]
1098+
for change, expected_change in zip(changes, expected_changes):
1099+
assert change["scope"] == expected_change["scope"]
1100+
assert change["breaking"] == expected_change["breaking"]
1101+
assert change["message"] == expected_change["message"]
1102+
assert change["author"] == "Commitizen"
1103+
assert change["author_email"] in "author@cz.dev"
1104+
assert "sha1" in change
10911105

10921106

10931107
def test_generate_tree_from_commits_with_no_commits(tags):

0 commit comments

Comments
 (0)