Repository navigation
changelog generation is not working as expected in case of cz_customize? #466
Copy link
Copy link
Open
Description
Description
Maybe I'm missing something but I'm not able to generate a changelog properly with custom configurations (cz_customize).
Steps to reproduce
cz --debug changelog --dry-run
Current behavior
I've tried different configurations through cz_customize, although the customization related to commits seems ok, the changelog generation doesn't work for me. I'm not able to generate a changelog as I do with the cz_conventional_commits. There is no filtering on the commits, no grouping by change_type as you can see below.
File: .cz.yaml
commitizen:
name: cz_customize
customize:
message_template: "{{change_type}}:{% if show_message %} {{message}}{% endif %}"
example: 'feature: this feature enable customize through config file'
schema: "<type>: <body>"
schema_pattern: (build|ci|docs|feat|fix|perf|refactor|style|test|chore|revert|bump)(\(\S+\))?!?:(\s.*)
changelog_pattern: ^(feat|fix|chore|refactor|perf)(\(.+\))?(!)?
change_type_order: ["BREAKING CHANGE", "feat", "fix", "refactor", "chore", "perf"]
info_path: cz_customize_info.txt
info: This is customized info
questions:
- type: list
name: change_type
choices:
- value: feature
name: 'feature: A new feature.'
- value: bug fix
name: 'bug fix: A bug fix.'
message: Select the type of change you are committing
- type: input
name: message
message: Body.
- type: confirm
name: show_message
message: Do you want to add body message in commit?cz --debug changelog --dry-run## Unreleased
- feat(DL-4567): new feature test
- fix(DL-1234): qweqwe
Screenshots
Desired behavior
File: .cz.yaml
commitizen:
name: cz_customize
customize:
message_template: "{{change_type}}:{% if show_message %} {{message}}{% endif %}"
example: 'feature: this feature enable customize through config file'
schema: "<type>: <body>"
schema_pattern: (build|ci|docs|feat|fix|perf|refactor|style|test|chore|revert|bump)(\(\S+\))?!?:(\s.*)
changelog_pattern: ^(feat|fix|chore|refactor|perf)(\(.+\))?(!)?
change_type_order: ["BREAKING CHANGE", "feat", "fix", "refactor", "chore", "perf"]
info_path: cz_customize_info.txt
info: This is customized info
questions:
- type: list
name: change_type
choices:
- value: feature
name: 'feature: A new feature.'
- value: bug fix
name: 'bug fix: A bug fix.'
message: Select the type of change you are committing
- type: input
name: message
message: Body.
- type: confirm
name: show_message
message: Do you want to add body message in commit?cz --debug changelog --dry-run`## Unreleased
### Feat
- **DL-4567**: new feature test
### Fix
- **DL-1234**: qweqwe
Environment
Commitizen Version: 2.20.0
Python Version: 3.10.0 (default, Oct 12 2021, 22:37:59) [Clang 13.0.0 (clang-1300.0.29.3)]
Operating System: Darwin
Reactions are currently unavailable


Activity
woile commentedon Dec 23, 2021
Hey bruno, I copied your example, seems to be working well. You see that error because of the
--debugflag. Which gives you extra information, but it is not returning an error (you can see the error code doingecho $?and you'll see is still0).Let me know if that's correct, otherwise we can continue exploring the issue.
Cheers!
brunopereira7 commentedon Dec 23, 2021
Hey Santiago, thanks for your input.
I switched on the
--debugflag to check if I have any extra information that could explain what I'm missing, but maybe I was not clear in explaining the issue (btw, I updated the "Desired Behavior" section).I want to generate the changelog (as it is generated by default with cz_conventional_commits) using cz_customize definitions. Maybe I'm missing something in my configuration, but after trying different settings with cz_customize, I'm not able to achieve the changelog generation features:
Thanks once again, and let me know if you need further information.
woile commentedon Dec 23, 2021
I think the commit_parser regex is not exposed in the customize
commitizen/commitizen/defaults.py
Line 83 in 095f02e
and it looks like the customize is using the default from the base
commitizen/commitizen/cz/base.py
Line 30 in 095f02e
Any thoguhts on this @Lee-W ? Was there a reason for not exposing commit_parser?
Lee-W commentedon Dec 24, 2021
Back to the time
cz_customizewas designed, it was not designed to have any default value. But there might be some default values accidentally added tocz_cutsomize. What's in my mind now is to deprecatecz_customizeand make the options incz_*customizablewhoracle commentedon Jun 10, 2022
Any updates on this topic? I stumbled over this, too. Or do I need to create a custom cz_ plugin?
Lee-W commentedon Jul 22, 2022
We're out of bandwidth to implement this feature these days. PR is welcome 🙂
robertschweizer commentedon Mar 29, 2023
I think
commit_parseris exposed since #442.Better default handling for
cz_customizeas suggested by @Lee-W is also discussed here: #535shantonio commentedon Jun 26, 2023
@Lee-W
any updates to use cz_customize with default parser ?
Lee-W commentedon Jun 27, 2023
No update at this moment. Would appreciate it if anyone wants to take a look 🙂
PhilStollery commentedon Mar 7, 2025
If anyone else comes across this, like those trying to get a monorepo working with multitple .cz.toml files, you need to add the commit_parser from defeault.py.
Spent three days trying to get this to work - hope it saved you sometime.
bearomorphism commentedon May 9, 2026
Triage from #1964: Looks fixed in master (4.15.1).
commitizen/cz/customize/customize.py(lines 40-50) now readschange_type_order,change_type_map,commit_parser, andchangelog_patternfrom the customize section. If anyone can still reproduce on 4.15.1, please share the config — otherwise this can probably be closed.bearomorphism commentedon May 9, 2026
Verification update (re #1964)
My earlier "likely fixed" triage was wrong — I reproduced this against current master (4.15.1):
Config (cz.yaml):
cz_customizewithchange_type_order: ["BREAKING CHANGE", "feat", "fix", "refactor", "chore", "perf"]andchangelog_pattern: '^(feat|fix|chore|refactor|perf)(\(.+\))?(!)?'.Commits:
feat(DL-4567): ...,fix(DL-1234): ...,chore: ....Output of
cz changelog --dry-run:No
### Feat/### Fixheadings — still ungrouped.Verdict: STILL VALID. Likely root cause:
cz_customizedoesn't auto-derive acommit_parserfromchangelog_pattern, so the changelog generator can't extract achange_typegroup key. Either:commit_parser(with named groups includingchange_type), orcommit_parserfromchangelog_patternforcz_customize.