commitizen-tools / commitizen

Create committing rules for projects :rocket: auto bump versions :arrow_up: and auto changelog generation :open_file_folder:
https://commitizen-tools.github.io/commitizen/
MIT License
2.28k stars 251 forks source link

Default changelog titles for `cz_conventional_commits` #1119

Open paduszyk opened 1 month ago

paduszyk commented 1 month ago

Description

In general the Conventional Commits / Angular scheme is suitable for me (as for most of the people write code with VSC, I guess). It is nicely implemented in commitizen and suggested to be set as a default (see #535, comment). That's great!

The only thing I don't get is the way the changelog sections are formatted:

https://github.com/commitizen-tools/commitizen/blob/3e57007bf1f882a6ed34717c68d3a265e16dcf7a/commitizen/cz/conventional_commits/conventional_commits.py#L35-L40

Is there any specific reason (or convention) for which the section titles are as they are?

Changelogs are supposed to be read by humans (?), so why more human-readable names aren't applied?

Regards! ๐Ÿ™‚

Possible Solution

change_type_map = { 
     "feat": "Features", 
     "fix": "Bug fixes", 
     "refactor": "Code refactoring", 
     "perf": "Performance improvements", 
 } 

The change_type_order must be updated accordingly.

Additional context

I am aware of the fact that my issue can be resolved by cz_customize. This, however, requires providing extra configurations, e.g. bump_pattern, etc.

Additional context

No response

woile commented 1 month ago

Yeah me neither TBH, I'm open to it. @Lee-W @noirbizarre do you have any thoughts?

Lee-W commented 1 month ago

Looks good to me. But will we probably need to go to v4? somewhat a breaking change

woile commented 1 month ago

I think even if it's exposing to the end user, it's not a breaking change. Functionality will remain the same.

Lee-W commented 1 month ago

I think even if it's exposing to the end user, it's not a breaking change. Functionality will remain the same.

I'm ok with it. Sound great!

paduszyk commented 1 month ago

@Lee-W @woile I'm glad you guys are OK with it. I also don't see a breaking change in it.

I can open a PR if you don't mind... Just let me know whether the titles I have proposed are OK. Maybe, we should go with "New features", "Features added", or "New features added" instead of "Features".

Lee-W commented 1 month ago

Sounds great! I don't have a strong opinion on which one. Maybe we can take a look at how large open-source projects do. Assigning this to you. Thanks!

paduszyk commented 1 month ago

As I just checked in my local fork, updating the titles breaks a lot of tests. This is because the old titles are hard-coded in the test changelogs. So, one way is to update the hard-coded titles. This would result in a large diff, however...

An alternative is to add (to the global conftest.py) a fixture that will preserve the old titles:

@pytest.fixture(autouse=True)
def default_change_type_map(mocker: MockFixture) -> None:
    mocker.patch.object(
        ConventionalCommitsCz,
        "change_type_map",
        {
            "feat": "Feat",
            "fix": "Fix",
            "refactor": "Refactor",
            "perf": "Perf",
        },
    )

This makes everything green.

@woile @Lee-W What do you think? I have some doubts. Should I auto use or use the fixture only for the tests that fail?

Lee-W commented 1 month ago

Sorry for late reply. I would prefer use the fixture only for the tests that fail

woile commented 1 month ago

I'd rather have the tests fixed ๐Ÿ™๐Ÿป