- commit: allow '-- --allow-empty' to create empty commits
- commitizen: document '--' double dash in '--help'
- commit: avoid warnings with 'always_signoff' configuration
- commit: resolve 'always_signoff' configuration and '-s' CLI issues
- cli: replace magic number 0 with ExitCode.EXPECTED_EXIT
- defaults: disallow style as None
- cz_customize: return empty string for info, example, schema and schema_pattern if not provided
- commands/commit: add force-edit functionality after answering questions
- remove redundant return None
- changelog: Factorized TAG_FORMAT_REGEXES
- changelog: Handle tag format without version pattern
- changelog: handle custom tag_format in changelog generation
- Use format strings
- bump: add functionality to write the next version to stdout
- add argument to limit length of commit message in checks
- config_files: add support for "cz.toml" config file
- base.py: add encoding when open changlelog_file
- cli/commands: add description for subcommands
- KNOWN_SCHEMES: replace set comprehension for list comprehension
- tests/commands: move "other" tests for the correspondent file
- ci/cd: automates the generation of CLI screenshots
- strip possessive from note about ci option
- add an argument to limit the length of commit message
- strip the commit message for calculating length
- resolve test error by removing defaults
- commands/commit: replace comparison with chained comparison
- check the length in Commit instead of Commitizen
- schemes: adds support for SemVer 2.0 (dot in pre-releases) (fix #1025) (#1072)
- bump:
version_files
now support glob patterns (fix #1067) (#1070)
- cli: add config option to specify config file path
- defaults: move cz_conventional_commit defaults out of defaults.py
- commitizen/git.py,-tests/test_git.py: Resolve tempfile path spaces issue in git commit function
- command-init: "cz init" should list existing tag in reverse order
- commit: add retry_after_failure config option and --no-retry flag
- utils: convert git project root to posix path for backup file name
- commit: use Optional[str] instead of str | None
- commit: remove unused tempfile import
- git-hooks: make git hooks use get_backup_file_path
- utils: move backup path creation to utils
- changelog: expose commits
sha1
,author
andauthor_email
in changelog tree (fix #987) (#1013)
- changelog: adds a
changelog_release_hook
called for each release in the changelog (#1018)
- changelog: include latest change when dry run and incremental
- warnings: all warnings should go to
stdout
- git: force the default git locale on methods relying on parsing the output (#1012)
- changelog: changelog hook was not called on dry run
- changelog:
changelog_message_build_hook
can now generate multiple changelog entries from a single commit (#1003)
- changelog: ensure
changelog_message_builder_hook
can access and modifychange_type
(#1002)
- bump: pre and post bump hooks were failing when an increment was provided (fix #1004)
- changelog:
changelog_message_build_hook
can remove message by returning a falsy value
- commands: add bump --exact
- bump: change --exact-increment to --increment-mode
- bump: only get and validate commits if increment is not provided
- Improve type annotations
- bump: functionality to add build-metadata to version string
- bump: remove unused method
- scm: only search tags that are reachable by the current commit
- properly bump versions between prereleases (#799)
- commands-bump: automatically create annotated tag if message is given
- add tag message argument to cli
- git: add get tag message function
- add custom message to annotated git tag
- test-bump-command: typo in --annotated-tag option inside test
- commitizen-git: add quotes for tag message
- commands-bump: make changelog variable in 1 line
- commands-bump: cast str to bool
- formats: expose some new customizable changelog formats on the
commitizen.changelog_format
endpoint (Textile, AsciiDoc and RestructuredText) - template: add
changelog --export-template
command - template: allow to override the template from cli, configuration and plugins
- cli.py: Added support for extra git CLI args after -- separator for
cz commit
command
- filename: ensure
file_name
can be passed tochangelog
frombump
command
- git.py: Removed 'extra_args' from git.commit
- extra_args: Fixed broken code due to rebase and finalized tests
- Code Review - round 1 changes
- Commit: Added deprecation on git signoff mechanic
- bump: add bump support with custom type + scope + exclamation mark
- bump: version bumping
- Drop support for Python 3.7 (#858)
- conf: handle parse error when init (#856)
- commands: add arg of cz commit to execute git add
- tests: modify the arg of commit from add to all
- commitizen: Modify the function of the arg a of commit from git add all to git add update
- commitizen: add return type hint of git add function
- provider: split provider code and related tests into individual files for maintainability (#830)
- add sponsors to README
- defaults.py: add always_signoff config option for commits
- empty error on bump failure
- provider: add npm2 provider to update package.json, package-lock.json, and npm-shrinkwrap.json
- provider: fix npm version provider to update package-lock.json and npm-shrinkwrap.json if they exist
- provider: fix npm provider to update package-lock.json and npm-shrinkwrap.json if they exist
- test: pass correct type to get_package_version tests
- tests: completed test coverage for npm2
- changelog.py: add encoding to get_metadata
- unicode: add unicode support
- add missing
encoding
parameter - out.py:
TextIOWrapper.reconfigure
typing - correct type hinting
- use base config for encoding
- defaults.py: use variables in
DEFAULT_SETTINGS
- replace SemVer type literals by respective constants
- Treat $version the same as unset tag_format in ScmProvider
- Make tag_format properly default to $version
- typing: no_raise is declared as optional
- only use version tags when generating a changelog
- Add option in bump command to redirect git output to stderr
- veresion_schemes: import missing Self for python 3.11
- version-schemes: expose
version_schemes
as acommitizen.scheme
endpoint.
- add support for cargo workspaces
- init: fix is_pre_commit_installed method
- add support for importlib_metadata 6
- hooks: add prepare-commit-msg and post-commit hooks
- commit: add --write-message-to-file option
- bump: better match for change_type when finding increment
- changelog: breaking change on additional types for conventional commits
- bump: breaking changes on additional types for conventional commits
- improve errors message when empty .cz.json found
- init: poetry detection
- bump decli which is type hinted
- commit: change type of write_message_to_file to path
- bump changelog for prerelease without commits
- make
major_version_zero
customizable by third parties
- typo in hook
- set default_install_hook_types
- Plugins are now exposed as
commitizen.plugin
entrypoints - Python 3.6 is not officially supported anymore. Please migrate from 3.6 to 3.7 or greater.
- init: add new settings
- add semver support through version provider new api (#686)
- changelog: add merge_prereleases flag
- providers: add a
scm
version provider - providers: add support for some JSON-based version providers (NPM, Composer)
- providers: add support for some TOML-based versions (PEP621, Poetry, Cargo)
- providers: add a
commitizen.provider
endpoint for alternative versions providers - plugins: Switch to an importlib.metadata.EntryPoint-based plugin loading
- init: welcome message
- small corrections and clean up
- major version zero message
- update dependencies
- commands/changelog: use topological order for commit ordering
- excepthook: ensure traceback can only be a
TracebackType
orNone
- bump: fixed environment variables in bump hooks
- bump: support prereleases with start offset
- bump: added support for running arbitrary hooks during bump
- yaml_config: add explicit_start for yaml output
- filter git diff from commit message
- init: allow user to select which type of pre commit hooks to install
- init: space between
--hook-type
options - init: report error when hook installation failed
- init:
_install_pre_commit_hook
raise error when failed
- poetry: relax packaging version
- changelog: allow rev range lookups without a tag format
- add major-version-zero option to support initial package development
- scripts: remove
venv/bin/
- scripts: add error message to
test
- scripts/test: MinGW64 workaround
- scripts/test: use double-quotes
- scripts: pydocstyle and cz
- bump.py: use
sys.stdin.isatty()
- scripts: use cross-platform POSIX
- scripts: use portable shebang
- pythonpackage.yml: undo indent reformatting
- pythonpackage.yml: use
bash
- allow fixup! and squash! in commit messages
- bump: support optional manual version argument
- bump: fix type hint
- bump: fix typos
- bump.py:
CHANGELOG.md
gets git added and committed correctly
- add functionality for dev-releases
- README.md: fix pre-commit install command
- bump: log git commit stderr and stdout during bump
- command_changelog: Fixed issue #561 cz bump could not find the latest version tag with custom tag_format
- bump: Remove a redundant join call
- bump: Search for version number line by line
- bump: Support regexes containing colons
- git: Improves error checking in get_tags
- git: improves git error checking in get_commits
- git: test the git log parser behaves properly when the repository has no commits
- changelog: fixes logic issue made evident by latest fix(git) commit
- pre-commit: Add commitizen-branch hook
- new file
- pyproject.toml: remove test added configurations
- changelog: use defaults.change_type_order in conventional commit
- capitalize types in default change_type_order
- Determine newline to write with Git
- cmd: improve character encoding detection for sub-commands
- git: use "git tag -v" return_code to check whether a tag is signed
- tool: use charset_normalizer instead of chardet
- changelog: removes unused code. duplicates are found in changelog_parser
- bump: send changelog to stdout when
dry-run
is paired withchangelog-to-stdout
- Check: process empty commit message
- ConventionalCommitsCz: cz's schema validates the whole commit message now
- Check: remove the extra preprocessing of commit message file
- use chardet to get correct encoding
- bump: add signed tag support for bump command
- avoid that pytest overrides existing gpg config
- test: set git to work with gpg
- changelog: skip non-compliant commit subjects when building changelog
- bump: make increment option case insensitive
- pre-commit: Use new --allow-abort option
- pre-commit: Confine hook to commit-msg stage
- pre-commit: Set min pre-commit to v1.4.3
- pre-commit: Don't require serial execution
- bump: let it respect pre-commit reformats when bumping
- check: Add --allow-abort option
- changelog: Improve whitespace in changelog
- changelog: Simplify incremental_build
- add --no-raise to avoid raising error codes
- change error code for NoneIncrementExit
- customize.py: adding support for commit_parser, changelog_pattern, change_type_map
- changelog: add support for single version and version range
- speed up testing and wait for tags
- git: use date as a function in GitTag to easily patch
- remove type ignore
- Switch to issue forms
- Switch to issue forms
- Switch to issue forms
- skip merge messages that start with Pull request
- Ignore packages that are not plugins
- iter_modules only accepts str
- bump: raise non zero error code when there's no eligible commit to bump
- check: filter out comment message when checking
- poetry: add typing-exteions to dev
- import TypedDict from type_extensions for backward compatibility
- conventional_commits: remove duplicate patterns and import from defaults
- config: add CzSettings and Questions TypedDict
- defaults: add Settings typeddict
- defaults: move bump_map, bump_pattern, commit_parser from defaults to ConventionalCommitsCz
- cli.py: add shortcut for signoff command
- add signoff parameter to commit command
- utility for showing system information
- cli: handle argparse different behavior after python 3.9
- commit: correct the stage checker before committing
- prompt: add keyboard shortcuts with config option
- shortcuts: move check for shortcut config setting to apply to any list select
- git.py: ensure signed commits in changelog when git config log.showsignature=true
- correct indentation for json config for better readability
- add support for jinja2 v3
- changelog: generating changelog after a pre-release
- changelog: annotated tags not generating proper changelog
- bump: fix error due to bumping version file without eol through regex
- bump: fix offset error due to partially match
- cz/conventional_commits: optionally expect '!' right before ':' in schema_pattern
- version update in a docker-compose.yaml file
- fix multiple versions bumps when version changes the string size
- bump: replace all occurrences that match regex
- wip: add test for current breaking change
- commands/init: fix toml config format error
- Support versions on random positions
- bump: send incremental changelog to stdout and bump output to stderr
- add utf-8 encode when write toml file
- git: fix get_commits deliminator
- config: change read mode from
r
torb
- changelog: add support for multiline BREAKING paragraph
- git: handle the empty commit and empty email cases
- remove yaml warnings when using '.cz.yaml'
- #271: enable creation of annotated tags when bumping
- #319: add optional change_type_order
- raise an InvalidConfigurationError
- #323: address PR feedback
- move expected COMMITS_TREE to global
- read commit_msg_file with utf-8
- deps: Update and relax tomlkit version requirement
- commit: attach user info to backup for permission denied issue
- add yaml as a config option
- config: add support for the new class YAMLConfig at the root of the confi internal package
- init: add support for yaml config file at init
- YAMLConfig: add a TypeError exception to handle in _parse_settings method
- commitizen/cli: add the integration with argcomplete
- Init: add the json config support as an option at Init
- commitizen/config/json_config: add json support for configuration
- json_config: fix the emtpy_config_content method
- support
!
in cz check command
- prevent prerelease from creating a bump when there are no commits
- allow files-only to set config version and create changelog
- bump: add flag
--local-version
that supports bumping only the local version instead of the public
- commands/bump: add config option to create changelog on bump
- commands/changelog: add config file options for start_rev and incremental
- init.py: mypy error (types)
- commands/bump: Add NoneIncrementExit to fix git fatal error when creating existing tag
- commands/bump: Remove comment and changed ... for pass
- cz_customize: make schema_pattern customiziable through config for cz_customize
- cz_check: cz check can read commit message from pipe
- conventional commit schema
- cli: rewrite cli instructions to be more succinct about what they require
- cli: add guideline for subject input
- cli: wrap the word enter with brackets
- cz_check: cz check can read from a string input
- cz_check: Add rev to all displayed ill-formatted commits
- cz_check: Update to show all ill-formatted commits
- cz_check: Refactor _get_commits to return GitCommit instead of dict
- git: use double quotation mark in get_tags
- commands/changelog: add exception message when failing to find an incremental revision
- commands/bump: display message variable properly
- setup.cfg, .cz and .cz.cfg are no longer supported
- Use "cz version" instead
- "cz --debug" will no longer work #47
- init: enable setting up pre-commit hook through "cz init"
- add missing
pyyaml
dependency - cli: make command required for commitizen
- config: drop "files" configure support. Please use "version_files" instead
- config: remove ini configuration support
- cli: remove "--version" argument
- conventional_commits: use and proper support for conventional commits v1.0.0
- add author and author_email to git commit
- changelog: remove pkg_resources dependency
- commands/bump: use
return_code
in commands used by bump - commands/commit: use return_code to raise commit error, not stderr
- cmd: add return code to Command
- bump: add changelog file into stage when running
cz bump --changelog
- Raise NotAGitProjectError only in git related command
- cli: enable displaying all traceback for CommitizenException when --debug flag is used
- exception: rename MissingConfigError as MissingCzCustomizeConfigError
- exception: Rename CommitFailedError and TagFailedError with Bump prefix
- commands/init: add test case and remove unaccessible code
- exception: move output message related to exception into exception
- exception: implement message handling mechanism for CommitizenException
- cli: do not show traceback if the raised exception is CommitizenException
- introduce DryRunExit, ExpectedExit, NoCommandFoundError, InvalidCommandArgumentError
- use custom exception for error handling
- error_codes: remove unused NO_COMMIT_MSG error code
- changelog: empty lines at the beginning of the CHANGELOG
- templates: remove trailing space in keep_a_changelog
- changelog: add support for
changelog_hook
when changelog finishes the generation - changelog: add support for
message_hook
method - changelog: add support for modifying the change_type in the title of the changelog
- changelog: rename
message_hook
->changelog_message_builder_hook
- commands/bump: add "--check-consistency" optional
- bump: add optional --no-verify argument for bump command
- docs: change old url woile.github.io to commitizen-tools.github.io
- changelog: generate today's date when using an unreleased_version
- changelog: sort the commits properly to their version
- commands/check: Show warning if no commit to check when running
cz check --rev-range
- cli: add explicit category for deprecation warnings
- changelog: add support for any commit rule system
- changelog: add incremental flag
- commands/changelog: make changelog_file an option in config
- commands/changelog: exit when there is no commit exists
- commands/changelog: add --start-rev argument to
cz changelog
- changelog: generate changelog based on git log
- commands/changelog: generate changelog_tree from all past commits
- cz/conventinal_commits: add changelog_map, changelog_pattern and implement process_commit
- cz/base: add default process_commit for processing commit message
- changelog: changelog tree generation from markdown
- git: missing dependency removed
- changelog: check get_metadata for existing changelog file
- cz/conventional_commits: fix schema_pattern break due to rebase
- changelog_template: fix list format
- commitizen/cz: set changelog_map, changelog_pattern to none as default
- commands/changelog: remove --skip-merge argument
- cli: add changelog arguments
- changelog: use functions from changelog.py
- changelog: rename category to change_type to fit 'keep a changelog'
- templates: rename as "keep_a_changelog_template.j2"
- templates: remove unneeded init file
- cli: reorder commands
- templates: move changelog_template from cz to templates
- tests/utils: move create_file_and_commit to tests/utils
- commands/changelog: remove redundant if statement
- commands/changelog: use jinja2 template instead of string concatenation to build changelog
- commands/init: fix typo
- git: fix returned value for GitCommit.message when body is empty
- git: replace GitCommit.message code with one-liner
- config: display ini config deprecation warning only when commitizen config is inside
- bump: support for ! as BREAKING change in commit message
- cz/customize: add error handling when customize detail is not set
- cz/customize: remove unused mypy ignore
- mypy: fix mypy check by checking version.pre exists
- cz: add type annotation to registry
- commands/check: fix type annotation
- config/base: use Dict to replace dict in base_config
- cz/base: fix config type used in base cz
- cz: add type annotation for each function in cz
- config: fix mypy warning for _conf
- commands/check: add help text for check command without argument
- cli: fix typo
- commands/check: add --rev-range argument for checking commits within some range
- bump: fix bump find_increment error
- cz/connventional_commit: use \S to check scope
- git: remove unnecessary dot between git range
- tests/bump: use parameterize to group similliar tests
- commands/init: fix clean up file when initialize commitizen config
- defaults: split config files into long term support and deprecated ones
- replace README.rst with docs/README.md in config files
- docs: remove README.rst and use docs/README.md
- commands/check: add bump into valid commit message of convention commit pattern
- pre-commit: set pre-commit check stage to commit-msg
- git: get_commits default from first_commit
- commands/bump: rename parameter into bump_setting to distinguish bump_setting and argument
- git: rename get tag function to distinguish return str and GitTag
- cmd: reimplement how cmd is run
- git: Use GitCommit, GitTag object to store commit and git information
- git: make arguments other then start and end in get_commit keyword arguments
- git: Change get_commits into returning commits instead of lines of messages
- cli: fix --version not functional
- tests/commands/bump: use tmp_dir to replace self implemented tmp dir behavior
- test_bump_command: rename camel case variables
- tests/commands/check: use pytest fixture tmpdir replace self implemented contextmanager
- test/commands/other: replace unit test style mock with mocker fixture
- tests/commands: separate command unit tests into modules
- tests/commands: make commands related tests a module
- config: look up configuration in git project root
- git: add find_git_project_root
- git: remove breakline in the return value of find_git_project_root
- git: make find_git_project_root return None if it's not a git project
- config/base_config: make set_key not implemented
- error_codes: move all the error_codes to a module
- config: replace string type path with pathlib.Path
- github_workflow/pythonpublish: use peaceiris/actions-gh-pages@v2 to publish docs
- cli: fix the way default handled for name argument
- cli: fix name cannot be overwritten through config in newly refactored config design
- pre-commit-hooks: add pre-commit hook
- pre-commit-hooks: add metadata for the check hook
- github_workflow/pythonpackage: set git config for unit testing
- scripts/test: ensure the script fails once the first failure happens
- add project version to command init
- new init command
- commands/bump: use "version_files" internally
- config: set "files" to alias of "version_files"
- config: handle empty config file
- config: fix load global_conf even if it doesn't exist
- config/ini_config: replace outdated _parse_ini_settings with _parse_settings
- new config system where each config type has its own class
- config: add type annotation to config property
- config: fix wrongly type annotated functions
- config/ini_config: move deprecation warning into class initialization
- config: use add_path instead of directly assigning _path
- all: replace all the _settings invoke with settings.update
- cz/customize: remove unnecessary statement "raise NotImplementedError("Not Implemented yet")"
- config: move default settings back to defaults
- config: Make config a class and each type of config (e.g., toml, ini) a child class
- cli: overwrite "name" only when it's not given
- config: fix typo
- support for different commitizens in
cz check
- bump: new argument --files-only
- commands/check.py: --commit-msg-file is now a required argument
- cz/exceptions: exception AnswerRequiredException not caught (#89)
- Commands/check: enforce the project to always use conventional commits
- config: add deprecation warning for loading config from ini files
- cz/customize: add jinja support to enhance template flexibility
- cz/filters: add required_validator and multiple_line_breaker
- Commands/commit: add ´--dry-run´ flag to the Commit command
- cz/cz_customize: implement info to support info and info_path
- cz/cz_customize: enable bump_pattern bump_map customization
- cz/cz_customize: implement customizable cz
- new 'git-cz' entrypoint
- commit dry-run doesn't require staging to be clean
- scripts: add back the delete poetry prefix
- correct typo to spell "convention"
- removing folder in windows throwing a PermissionError
- test_cli: testing the version command
- config: remove has_pyproject which is no longer used
- cz/customize: make jinja2 a custom requirement. if not installed use string.Template instead
- cz/utils: rename filters as utils
- cli: add back --version and remove subcommand required constraint
- cz: add a base exception for cz customization
- commands/commit: abort commit if there is nothing to commit
- git: add is_staging_clean to check if there is any file in git staging
- commands/commit: catch exception raised by customization cz
- cli: handle the exception that command is not given
- cli: enforce subcommand as required
- cz/conventional_commit: make NoSubjectException inherit CzException and add error message
- command/version: use out.write instead of out.line
- command: make version a command instead of an argument
- config: update style instead of overwrite
- config: parse style in config
- commit: make style configurable for commit command
- cz: fix bug in BaseCommitizen.style
- cz: fix merge_style usage error
- cz: remove breakpoint
- cz: change the color of default style
- commit: new retry argument to execute previous commit again
- #28 allows poetry add on py36 envs
- bump: it is now possible to specify a pattern in the files attr to replace the version
- added argument yes to bump in order to accept questions
- bump: handle commit and create tag failure
- bump: new commit message template
- bump: prefixes like docs, build, etc no longer generate a PATCH
- custom cz plugins now support bumping version
- bump: commit message now fits better with semver
- conventional commit 'breaking change' in body instead of title
- changed stdout statements
- schema: command logic removed from commitizen base
- info: command logic removed from commitizen base
- example: command logic removed from commitizen base
- commit: moved most of the commit logic to the commit command
- new working bump command
- create version tag
- update given files with new version
- config: new set key, used to set version to cfg
- support for pyproject.toml
- first semantic version bump implementation
- removed all from commit
- fix config file not working
- added commands folder, better integration with decli
- removed delegator, added decli and many tests
- py3 only, tests and conventional commits 1.0
- config: load config reads in order without failing if there is no commitizen section
- parse scope (this is my punishment for not having tests)
- parse scope empty
- scope: parse correctly again
- scope: parse correctly
- manifest: included missing files
- conventionalCommit: moved filters to questions instead of message
- config: home path for python versions between 3.0 and 3.5
- cli: added version
- committer: conventional commit is a bit more intelligent now
- setup.py: future is now required for every python version
- python 2 support
- cz: jira smart commits
- cli: renamed all to ls command
- cz: renamed angular cz to conventional changelog cz
- info command for angular
- config: new loads from ~/.cz and working project .cz .cz.cfg and setup.cfg
- package discovery
- cz_angular: improved messages