1111from commitizen import changelog , defaults , factory , git , out
1212from commitizen .changelog_formats import get_changelog_format
1313from commitizen .config import BaseConfig
14- from commitizen .cz .base import ChangelogReleaseHook , MessageBuilderHook
1514from commitizen .cz .utils import strip_local_version
1615from commitizen .exceptions import (
1716 DryRunExit ,
@@ -184,15 +183,6 @@ def __call__(self) -> None:
184183 commit_parser = self .cz .commit_parser
185184 changelog_pattern = self .cz .changelog_pattern
186185 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- )
196186
197187 if self .export_template_to :
198188 return self ._export_template ()
@@ -209,45 +199,53 @@ def __call__(self) -> None:
209199 assert self .file_name
210200
211201 tags = self .tag_rules .get_version_tags (git .get_tags (), warn = True )
212- end_rev = ""
202+ changelog_meta = changelog . Metadata ()
213203 if self .incremental :
214204 changelog_meta = self .changelog_format .get_metadata (self .file_name )
215205 if changelog_meta .latest_version :
216206 start_rev = self ._find_incremental_rev (
217207 strip_local_version (changelog_meta .latest_version_tag or "" ), tags
218208 )
209+
210+ end_rev = ""
219211 if self .rev_range :
220212 start_rev , end_rev = changelog .get_oldest_and_newest_rev (
221213 tags ,
222214 self .rev_range ,
223215 self .tag_rules ,
224216 )
217+
225218 commits = git .get_commits (start = start_rev , end = end_rev , args = "--topo-order" )
226219 if not commits and (
227220 self .current_version is None or not self .current_version .is_prerelease
228221 ):
229222 raise NoCommitsFoundError ("No commits found" )
223+
230224 tree = changelog .generate_tree_from_commits (
231225 commits ,
232226 tags ,
233227 commit_parser ,
234228 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 ,
239233 rules = self .tag_rules ,
240234 )
241235 if self .change_type_order :
242236 tree = changelog .generate_ordered_changelog_tree (
243237 tree , self .change_type_order
244238 )
245239
246- extras = self .cz .template_extras .copy ()
247- extras .update (self .config .settings ["extras" ])
248- extras .update (self .extras )
249240 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+ },
251249 ).lstrip ("\n " )
252250
253251 # Dry_run is executed here to avoid checking and reading the files
0 commit comments