diff --git a/commitizen/commands/bump.py b/commitizen/commands/bump.py index c29c4c35c5..3975218660 100644 --- a/commitizen/commands/bump.py +++ b/commitizen/commands/bump.py @@ -293,7 +293,9 @@ def __call__(self) -> None: # noqa: C901 "unreleased_version": new_tag_version, "template": self.template, "extras": self.extras, - "incremental": True, + "incremental": self.config.mutated_settings.get( + "changelog_incremental", True + ), "dry_run": True, }, ) @@ -305,7 +307,9 @@ def __call__(self) -> None: # noqa: C901 self.config, { "unreleased_version": new_tag_version, - "incremental": True, + "incremental": self.config.mutated_settings.get( + "changelog_incremental", True + ), "dry_run": dry_run, "template": self.template, "extras": self.extras, diff --git a/commitizen/config/base_config.py b/commitizen/config/base_config.py index 478691aa14..5a3f237ab0 100644 --- a/commitizen/config/base_config.py +++ b/commitizen/config/base_config.py @@ -10,11 +10,21 @@ def __init__(self): self._settings: Settings = DEFAULT_SETTINGS.copy() self.encoding = self.settings["encoding"] self._path: Path | None = None + self._settings_from_configs: Settings = {} @property def settings(self) -> Settings: return self._settings + @property + def mutated_settings(self) -> Settings: + """It is used to record the changes from the config file defined by users, + which helps distinguish the ambiguous default behavior of + `changelog_incremental`. + Please refer to https://github.com/commitizen-tools/commitizen/pull/996 + """ + return self._settings_from_configs + @property def path(self) -> Path | None: return self._path diff --git a/commitizen/config/json_config.py b/commitizen/config/json_config.py index cf554922d6..9087dbd5a7 100644 --- a/commitizen/config/json_config.py +++ b/commitizen/config/json_config.py @@ -52,5 +52,6 @@ def _parse_setting(self, data: bytes | str) -> None: try: self.settings.update(doc["commitizen"]) + self.mutated_settings.update(doc["commitizen"]) except KeyError: self.is_empty_config = True diff --git a/commitizen/config/toml_config.py b/commitizen/config/toml_config.py index d45860d650..4dd2989387 100644 --- a/commitizen/config/toml_config.py +++ b/commitizen/config/toml_config.py @@ -58,5 +58,6 @@ def _parse_setting(self, data: bytes | str) -> None: try: self.settings.update(doc["tool"]["commitizen"]) # type: ignore + self.mutated_settings.update(doc["tool"]["commitizen"]) # type: ignore except exceptions.NonExistentKey: self.is_empty_config = True diff --git a/commitizen/config/yaml_config.py b/commitizen/config/yaml_config.py index 396e2eba11..5beec3220a 100644 --- a/commitizen/config/yaml_config.py +++ b/commitizen/config/yaml_config.py @@ -38,6 +38,7 @@ def _parse_setting(self, data: bytes | str) -> None: try: self.settings.update(doc["commitizen"]) + self.mutated_settings.update(doc["commitizen"]) except (KeyError, TypeError): self.is_empty_config = True