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 ,
@@ -188,15 +187,6 @@ def __call__(self) -> None:
188187 commit_parser = self .cz .commit_parser
189188 changelog_pattern = self .cz .changelog_pattern
190189 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- )
200190
201191 if self .export_template_to :
202192 return self ._export_template (self .export_template_to )
@@ -213,45 +203,53 @@ def __call__(self) -> None:
213203 assert self .file_name
214204
215205 tags = self .tag_rules .get_version_tags (git .get_tags (), warn = True )
216- end_rev = ""
206+ changelog_meta = changelog . Metadata ()
217207 if self .incremental :
218208 changelog_meta = self .changelog_format .get_metadata (self .file_name )
219209 if changelog_meta .latest_version :
220210 start_rev = self ._find_incremental_rev (
221211 strip_local_version (changelog_meta .latest_version_tag or "" ), tags
222212 )
213+
214+ end_rev = ""
223215 if self .rev_range :
224216 start_rev , end_rev = changelog .get_oldest_and_newest_rev (
225217 tags ,
226218 self .rev_range ,
227219 self .tag_rules ,
228220 )
221+
229222 commits = git .get_commits (start = start_rev , end = end_rev , args = "--topo-order" )
230223 if not commits and (
231224 self .current_version is None or not self .current_version .is_prerelease
232225 ):
233226 raise NoCommitsFoundError ("No commits found" )
227+
234228 tree = changelog .generate_tree_from_commits (
235229 commits ,
236230 tags ,
237231 commit_parser ,
238232 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 ,
243237 rules = self .tag_rules ,
244238 )
245239 if self .change_type_order :
246240 tree = changelog .generate_ordered_changelog_tree (
247241 tree , self .change_type_order
248242 )
249243
250- extras = self .cz .template_extras .copy ()
251- extras .update (self .config .settings ["extras" ])
252- extras .update (self .extras )
253244 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+ },
255253 ).lstrip ("\n " )
256254
257255 # Dry_run is executed here to avoid checking and reading the files
0 commit comments