Skip to content

Commit 482a62e

Browse files
betaboonrelekang
authored andcommittedOct 22, 2022
fix: fix changelog generation in tag-mode (#171)
1 parent bb09233 commit 482a62e

File tree

2 files changed

+20
-8
lines changed

2 files changed

+20
-8
lines changed
 

‎semantic_release/history/logs.py

+1-5
Original file line numberDiff line numberDiff line change
@@ -98,14 +98,10 @@ def generate_changelog(
9898
# Additional sections will be added as new types are encountered
9999
changes: dict = {"breaking": []}
100100

101-
rev = None
102-
if from_version:
103-
rev = from_version
104-
105101
found_the_release = to_version is None
106102
to_version_commit = to_version and get_formatted_commit(to_version)
107103
from_version_commit = from_version and get_formatted_commit(from_version)
108-
for _hash, commit_message in get_commit_log(rev):
104+
for _hash, commit_message in get_commit_log(from_version, to_version):
109105
if not found_the_release:
110106
# Skip until we find the last commit in this release
111107
# (we are looping in the order of newest -> oldest)

‎semantic_release/vcs_helpers.py

+19-3
Original file line numberDiff line numberDiff line change
@@ -50,18 +50,34 @@ def get_formatted_commit(version: str) -> str:
5050
return message
5151

5252

53-
def get_commit_log(from_rev=None):
53+
def get_commit_log(from_rev=None, to_rev=None):
5454
"""Yield all commit messages from last to first."""
55-
rev = None
5655
if from_rev:
5756
from_rev = get_formatted_tag(from_rev)
5857
try:
5958
repo().commit(from_rev)
60-
rev = f"...{from_rev}"
6159
except BadName:
6260
logger.debug(
6361
f"Reference {from_rev} does not exist, considering entire history"
6462
)
63+
from_rev = None
64+
if to_rev:
65+
to_rev = get_formatted_tag(to_rev)
66+
try:
67+
repo().commit(to_rev)
68+
except BadName:
69+
logger.debug(
70+
f"Reference {to_rev} does not exist, considering entire history until HEAD"
71+
)
72+
to_rev = None
73+
74+
rev = None
75+
if from_rev and to_rev:
76+
rev = f"{to_rev}...{from_rev}"
77+
elif from_rev:
78+
rev = f"...{from_rev}"
79+
elif to_rev:
80+
rev = f"{to_rev}..."
6581

6682
for commit in repo().iter_commits(rev):
6783
yield (commit.hexsha, commit.message.replace("\r\n", "\n"))

0 commit comments

Comments
 (0)
Please sign in to comment.