11
11
from commitizen import changelog , defaults , factory , git , out
12
12
from commitizen .changelog_formats import get_changelog_format
13
13
from commitizen .config import BaseConfig
14
- from commitizen .cz .base import ChangelogReleaseHook , MessageBuilderHook
15
14
from commitizen .cz .utils import strip_local_version
16
15
from commitizen .exceptions import (
17
16
DryRunExit ,
@@ -188,15 +187,6 @@ def __call__(self) -> None:
188
187
commit_parser = self .cz .commit_parser
189
188
changelog_pattern = self .cz .changelog_pattern
190
189
start_rev = self .start_rev
191
- unreleased_version = self .unreleased_version
192
- changelog_meta = changelog .Metadata ()
193
- change_type_map : dict [str , str ] | None = self .change_type_map
194
- changelog_message_builder_hook : MessageBuilderHook | None = (
195
- self .cz .changelog_message_builder_hook
196
- )
197
- changelog_release_hook : ChangelogReleaseHook | None = (
198
- self .cz .changelog_release_hook
199
- )
200
190
201
191
if self .export_template_to :
202
192
return self ._export_template (self .export_template_to )
@@ -213,45 +203,53 @@ def __call__(self) -> None:
213
203
assert self .file_name
214
204
215
205
tags = self .tag_rules .get_version_tags (git .get_tags (), warn = True )
216
- end_rev = ""
206
+ changelog_meta = changelog . Metadata ()
217
207
if self .incremental :
218
208
changelog_meta = self .changelog_format .get_metadata (self .file_name )
219
209
if changelog_meta .latest_version :
220
210
start_rev = self ._find_incremental_rev (
221
211
strip_local_version (changelog_meta .latest_version_tag or "" ), tags
222
212
)
213
+
214
+ end_rev = ""
223
215
if self .rev_range :
224
216
start_rev , end_rev = changelog .get_oldest_and_newest_rev (
225
217
tags ,
226
218
self .rev_range ,
227
219
self .tag_rules ,
228
220
)
221
+
229
222
commits = git .get_commits (start = start_rev , end = end_rev , args = "--topo-order" )
230
223
if not commits and (
231
224
self .current_version is None or not self .current_version .is_prerelease
232
225
):
233
226
raise NoCommitsFoundError ("No commits found" )
227
+
234
228
tree = changelog .generate_tree_from_commits (
235
229
commits ,
236
230
tags ,
237
231
commit_parser ,
238
232
changelog_pattern ,
239
- unreleased_version ,
240
- change_type_map = change_type_map ,
241
- changelog_message_builder_hook = changelog_message_builder_hook ,
242
- changelog_release_hook = changelog_release_hook ,
233
+ self . unreleased_version ,
234
+ change_type_map = self . change_type_map ,
235
+ changelog_message_builder_hook = self . cz . changelog_message_builder_hook ,
236
+ changelog_release_hook = self . cz . changelog_release_hook ,
243
237
rules = self .tag_rules ,
244
238
)
245
239
if self .change_type_order :
246
240
tree = changelog .generate_ordered_changelog_tree (
247
241
tree , self .change_type_order
248
242
)
249
243
250
- extras = self .cz .template_extras .copy ()
251
- extras .update (self .config .settings ["extras" ])
252
- extras .update (self .extras )
253
244
changelog_out = changelog .render_changelog (
254
- tree , loader = self .cz .template_loader , template = self .template , ** extras
245
+ tree ,
246
+ self .cz .template_loader ,
247
+ self .template ,
248
+ ** {
249
+ ** self .cz .template_extras ,
250
+ ** self .config .settings ["extras" ],
251
+ ** self .extras ,
252
+ },
255
253
).lstrip ("\n " )
256
254
257
255
# Dry_run is executed here to avoid checking and reading the files
0 commit comments