{"id":2443,"library":"commitizen","title":"Commitizen","description":"Commitizen is a Python client tool that standardizes commit messages, automates version bumping using Semantic Versioning, and generates changelogs. It helps development teams maintain consistent commit history and streamline release processes. The library is actively maintained with frequent patch releases, and the current version is 4.13.9.","status":"active","version":"4.13.9","language":"en","source_language":"en","source_url":"https://github.com/commitizen-tools/commitizen","tags":["versioning","git","cli","developer-tools","conventional-commits","semantic-versioning","changelog"],"install":[{"cmd":"pip install commitizen","lang":"bash","label":"Install with pip"},{"cmd":"pipx install commitizen","lang":"bash","label":"Install with pipx (recommended for CLI tools)"}],"dependencies":[{"reason":"Required Python interpreter version for the library.","package":"python","optional":false}],"imports":[{"note":"Commitizen is primarily a command-line interface (CLI) tool. Direct programmatic Python imports for end-user commit or bump functionality are not the standard usage pattern. The commands shown are for invoking the CLI.","symbol":"Commitizen CLI","correct":"cz init\ncz commit\ncz bump"}],"quickstart":{"code":"# 1. Initialize Commitizen in your Git repository (creates a .cz.toml or modifies pyproject.toml)\ncz init\n\n# 2. Use 'cz commit' instead of 'git commit' for guided, conventional commits\ncz commit\n\n# 3. Automatically bump version and generate changelog based on conventional commits\ncz bump --changelog\n\n# Example pyproject.toml configuration\n# [tool.commitizen]\n# name = \"cz_conventional_commits\"\n# version = \"0.1.0\"\n# tag_format = \"v$version\"\n# version_files = [\n#     \"pyproject.toml:version\",\n#     \"src/__init__.py:__version__\"\n# ]\n# update_changelog_on_bump = true","lang":"bash","description":"To get started, initialize Commitizen in your project, which guides you through creating a configuration file (e.g., in `pyproject.toml` or `.cz.toml`). Then, use `cz commit` for an interactive prompt to create conventional commits, and `cz bump` to automatically increment your project's version and update the changelog based on these commits."},"warnings":[{"fix":"Upgrade your Python environment to 3.10 or newer.","message":"Python 3.6 is no longer officially supported as of Commitizen v4.x. Users on older Python versions must upgrade their environment to Python 3.7 or greater (current minimum is 3.10).","severity":"breaking","affected_versions":">=4.0.0"},{"fix":"Update custom plugins to use the `commitizen.plugin` entrypoint mechanism.","message":"For developers creating custom plugins, the way plugins are exposed changed in v4.x. They are now exposed as `commitizen.plugin` entrypoints.","severity":"breaking","affected_versions":">=4.0.0"},{"fix":"Replace `--files-only` with `--version-files-only` in your `cz bump` commands.","message":"The `cz bump --files-only` CLI flag was deprecated in version 4.13.0 and has been replaced by `--version-files-only`.","severity":"deprecated","affected_versions":">=4.13.0"},{"fix":"Use the `--no-raise` flag or specifically ignore exit code 21 (`cz --no-raise NO_INCREMENT bump`) to allow the command to succeed without a version bump when no changes qualify.","message":"When using `cz bump` in CI/CD pipelines, it might fail if there are no conventional commits eligible for a version bump (e.g., only 'chore' commits). This triggers a `NoneIncrementExit` (exit code 21).","severity":"gotcha","affected_versions":"All"},{"fix":"Prefix Git-specific arguments with `--`, e.g., `cz commit -- -s`.","message":"If you need to pass Git-specific flags like `-s` (signoff) to `git commit` when using `cz commit`, you must use a double dash (`--`) to separate Commitizen's arguments from Git's. For example, `cz commit -- -s` is correct, while `cz commit -s` is deprecated and will not work as expected.","severity":"gotcha","affected_versions":"All"}],"env_vars":null,"last_verified":"2026-04-10T00:00:00.000Z","next_check":"2026-07-09T00:00:00.000Z"}