Skip to content

Commit 73aa8a3

Browse files
fix(changelog): fix merge_prerelease flag not working if changelog contains only prereleases
1 parent 938f66a commit 73aa8a3

File tree

2 files changed

+9
-2
lines changed

2 files changed

+9
-2
lines changed

commitizen/changelog_formats/base.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,9 @@ def get_latest_full_release(self, filepath: str) -> IncrementalMergeInfo:
8080
return self.get_latest_full_release_from_file(changelog_file)
8181

8282
def get_latest_full_release_from_file(self, file: IO[Any]) -> IncrementalMergeInfo:
83+
latest_version_index: int | None = None
8384
for index, line in enumerate(file):
85+
latest_version_index = index
8486
line = line.strip().lower()
8587

8688
parsed = self.parse_version_from_title(line)
@@ -89,7 +91,7 @@ def get_latest_full_release_from_file(self, file: IO[Any]) -> IncrementalMergeIn
8991
GitTag(parsed.tag, "", "")
9092
).is_prerelease:
9193
return IncrementalMergeInfo(name=parsed.tag, index=index)
92-
return IncrementalMergeInfo()
94+
return IncrementalMergeInfo(index=latest_version_index)
9395

9496
def parse_version_from_title(self, line: str) -> VersionTag | None:
9597
"""

commitizen/commands/changelog.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -225,12 +225,17 @@ def __call__(self) -> None:
225225
latest_full_release_info = self.changelog_format.get_latest_full_release(
226226
self.file_name
227227
)
228-
start_rev = latest_full_release_info.name or ""
229228
if latest_full_release_info.index:
230229
changelog_meta.unreleased_start = 0
231230
changelog_meta.latest_version_position = latest_full_release_info.index
232231
changelog_meta.unreleased_end = latest_full_release_info.index - 1
233232

233+
start_rev = latest_full_release_info.name or ""
234+
if not start_rev and latest_full_release_info.index:
235+
# Only pre-releases in changelog
236+
changelog_meta.latest_version_position = None
237+
changelog_meta.unreleased_end = latest_full_release_info.index + 1
238+
234239
commits = git.get_commits(start=start_rev, end=end_rev, args="--topo-order")
235240
if not commits and (
236241
self.current_version is None or not self.current_version.is_prerelease

0 commit comments

Comments
 (0)