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