Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 8492af8

Browse files
committedMar 11, 2024
feat(changelog): expose commits sha1, author and author_email in changelog tree (fix #987)
1 parent 579205d commit 8492af8

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
@@ -188,7 +188,12 @@ def process_commit_message(
188188
changes: dict[str | None, list],
189189
change_type_map: dict[str, str] | None = None,
190190
):
191-
message: dict = parsed.groupdict()
191+
message: dict = {
192+
"sha1": commit.rev,
193+
"author": commit.author,
194+
"author_email": commit.author_email,
195+
**parsed.groupdict(),
196+
}
192197

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

‎docs/customization.md

+3
Original file line numberDiff line numberDiff line change
@@ -500,6 +500,9 @@ Each `Change` has the following fields:
500500
| ---- | ---- | ----------- |
501501
| scope | `str | None` | An optional scope |
502502
| message | `str` | The commit message body |
503+
| sha1 | `str` | The commit `sha1` |
504+
| author | `str` | The commit author name |
505+
| author_email | `str` | The commit author email |
503506

504507
!!! Note
505508
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
@@ -1083,10 +1083,24 @@ def test_generate_tree_from_commits(gitcommits, tags, merge_prereleases):
10831083
tree = changelog.generate_tree_from_commits(
10841084
gitcommits, tags, parser, changelog_pattern, merge_prerelease=merge_prereleases
10851085
)
1086-
if merge_prereleases:
1087-
assert tuple(tree) == COMMITS_TREE_AFTER_MERGED_PRERELEASES
1088-
else:
1089-
assert tuple(tree) == COMMITS_TREE
1086+
expected = (
1087+
COMMITS_TREE_AFTER_MERGED_PRERELEASES if merge_prereleases else COMMITS_TREE
1088+
)
1089+
1090+
for release, expected_release in zip(tree, expected):
1091+
assert release["version"] == expected_release["version"]
1092+
assert release["date"] == expected_release["date"]
1093+
assert release["changes"].keys() == expected_release["changes"].keys()
1094+
for change_type in release["changes"]:
1095+
changes = release["changes"][change_type]
1096+
expected_changes = expected_release["changes"][change_type]
1097+
for change, expected_change in zip(changes, expected_changes):
1098+
assert change["scope"] == expected_change["scope"]
1099+
assert change["breaking"] == expected_change["breaking"]
1100+
assert change["message"] == expected_change["message"]
1101+
assert change["author"] == "Commitizen"
1102+
assert change["author_email"] in "author@cz.dev"
1103+
assert "sha1" in change
10901104

10911105

10921106
def test_generate_tree_from_commits_with_no_commits(tags):

0 commit comments

Comments
 (0)
Please sign in to comment.