Releases: jorisroovers/gitlint
0.19.1
0.19.0
This release was primarily focused on modernizing gitlint's build and test tooling (details: #378).
General
- Python 3.6 no longer supported (EOL since 2021-12-23) (#379)
- This is the last release to support the sh library (used under-the-hood to execute git commands) by setting
GITLINT_USE_SH_LIB=1
. This is already disabled by default since v0.18.0.
Features
- Allow for a single commit in the
--commits
cmd-line param (#412) - thanks @carlescufi - Gitlint now separates
FILE_ENCODING
(always UTF-8) fromTERMINAL_ENCODING
(terminal dependent), this should improve issues with unicode. Usegitlint --debug
to inspect these values. (#424)
Bugfixes
ignore-by-author-name
crashes without --staged (#445)- Various documentation fixes (#401, #433) - Thanks @scop
Development
- Adopted hatch for project management (#384).
This significantly improves the developer workflow, please read the updated CONTRIBUTING page. - Adopted ruff for linting, replacing pylint (#404)
- Gitlint now publishes dev builds on every commit to main (#429)
- Gitlint now publishes a
latest_dev
docker image on every commit to main (#451) (#452) - Dependencies updated
- Many improvements to the CI/CD worfklows
- Fixed coveralls integration: coveralls.io/github/jorisroovers/gitlint
- Improve unit test coverage (#453)
- Integration test fixes on windows (#392, #397)
- Devcontainer improvements (#428)
- Removal of Dockerfile.dev (#390)
- Fix most integration tests on Windows
- Fix Windows unit tests (#383)
- Introduce a gate/check GHA job (#375) - Thanks @webknjaz
- Thanks to @sigmavirus24 for continued overall help and support
New Contributors
- @webknjaz made their first contribution in #375
- @carlescufi made their first contribution in #412
Full Changelog: v0.18.0...v0.19.0
0.19.0rc2
Release Candidate 2 for the upcoming 0.19.0 release
0.19.0rc1
Release Candidate 1 for the upcoming 0.19.0 release
0.18.0
Contributors:
Special thanks to all contributors for this release - details inline!
- Python 3.11 support
- Last release to support Python 3.6 (EOL since 2021-12-23)
- Behavior Change: In a future release, gitlint will be switching to use
re.search
instead ofre.match
semantics for all rules. Your rule regexes might need updating as a result, gitlint will print a warning if so. More details are in the docs. (#254) - gitlint no longer uses the sh library by default in an attempt to reduce external dependencies. In case of issues, the use of
sh
can be re-enabled by setting the env varGITLINT_USE_SH_LIB=1
. This fallback will be removed entirely in a future gitlint release. (#351) --commits
now also accepts a comma-separated list of commit hashes, making it possible to lint a list of non-contiguous commits without invoking gitlint multiple times (#283)- Improved handling of branches that have no commits (#188) - thanks domsekotill
- Support for
GITLINT_CONFIG
env variable (#189) - thanks Notgnoshi - Added a new
gitlint-ci
pre-commit hook, making it easier to run gitlint through pre-commit in CI (#191) - thanks guillaumelambert - Contrib Rules:
- New contrib-disallow-cleanup-commits rule (#312) - thanks matthiasbeyer
- New contrib-allowed-authors rule (#358) - thanks stauchert
- User Defined rules:
- Gitlint now recognizes
fixup=amend
commits (see related git documentation), available ascommit.is_fixup_amend_commit=True
- Gitlint now parses diff stat information, available in
commit.changed_files_stats
(#314)
- Gitlint now recognizes
- Bugfixes:
- Under-the-hood:
- Dependencies updated
- Moved to black for formatting
- Fixed nasty CI issue (#298)
- Unit tests fix (#256) - thanks carlsmedstad
- Vagrant box removed in favor of github dev containers (#348)
- Removed a few lingering references to the
master
branch in favor ofmain
- Moved roadmap and project planning to github projects
- Thanks to sigmavirus24 for continued overall help and support
0.17.0
Contributors:
Special thanks to all contributors for this release, in particular andersk and sigmavirus24.
- Gitlint is now split in 2 packages:
gitlint
andgitlint-core
. This allows users to install gitlint without pinned dependencies (which is the default) (#162) - Under-the-hood: dependencies updated
0.16.0
Contributors:
Special thanks to all contributors for this release, in particular sigmavirus24, l0b0 and rafaelbubach.
- Python 3.10 support
- New Rule: ignore-by-author-name allows users to skip linting commit messages made by specific authors
--commit <SHA>
flag to more easily lint a single commit message (#141)--fail-without-commits
flag will force gitlint to fail (exit code 253) when the target commit range is empty (typically when using--commits
) (#193)- Bugfixes:
- contrib-title-conventional-commits (CT1) now properly enforces the commit type (#185)
- contrib-title-conventional-commits (CT1) now supports the BREAKING CHANGE symbol "!" (#186)
- Heads-up: Python 3.6 will become EOL at the end of 2021. It's likely that future gitlint releases will stop supporting Python 3.6 as a result. We will continue to support Python 3.6 as long as its easily doable, which in practice usually means as long as our dependencies support it.
- Under-the-hood: dependencies updated, test and github action improvements.
0.15.1
Contributors:
Special thanks to all contributors for this release, in particular PW999, gsemet and Lorac.
Bugfixes:
- Git commit message body with only new lines is not longer considered empty by
body-is-missing
(#176) - Added compatibility with
git commit -s
forcontrib-requires-signed-off-by
rule (#178) - Minor tweak to gitlint commit-hook output (#173)
- All dependencies have been upgraded to the latest available versions (
Click==7.1.2
,arrow==1.0.3
,sh==1.14.1
). - Minor doc fixes
0.15.0
Contributors:
Special thanks to BrunIF, lukech, Cielquan, harens and sigmavirus24.
This release drops support for Python 2.7 and Python 3.5 (both are EOL). Other than a few minor fixes, there are no functional differences from the 0.14.0 release.
Other call-outs:
- Mac users: Gitlint can now be installed using both homebrew (upgraded to latest) and macports. Special thanks to @harens for maintaining these packages (best-effort).
- Bugfix: Gitlint now properly handles exceptions when using its built-in commit-msg hook (#166).
- All dependencies have been upgraded to the latest available versions (
Click==7.1.2
,arrow==0.17.0
,sh==1.14.1
). - Much under-the-hood refactoring as a result of dropping Python 2.7
0.14.0
Contributors:
Special thanks to all contributors for this release, in particular @mrshu, @glasserc, @strk, @chgl, @melg8 and @sigmavirus24.
- IMPORTANT: Gitlint 0.14.x will be the last gitlint release to support Python 2.7 and Python 3.5, as both are EOL which makes it difficult to keep supporting them.
- Python 3.9 support
- New Rule: title-min-length enforces a minimum length on titles (default: 5 chars) (#138)
- New Rule: body-match-regex allows users to enforce that the commit-msg body matches a given regex (#130)
- New Rule: ignore-body-lines allows users to
ignore parts of a commit by matching a regex against
the lines in a commit message body (#126) - Named Rules allow users to have multiple instances of the same rule active at the same time. This is useful when you want to enforce the same rule multiple times but with different options (#113, #66)
- User-defined Configuration Rules allow users to dynamically change gitlint's configuration and/or the commit before any other rules are applied.
- The
commit-msg
hook has been re-written in Python (it contained a lot of Bash before), fixing a number of platform specific issues. Existing users will need to reinstall their hooks (gitlint uninstall-hook; gitlint install-hook
) to make use of this. - Most general options can now be set through environment variables (e.g. set the
general.ignore
option viaGITLINT_IGNORE=T1,T2
). The list of available environment variables can be found in the configuration documentation. - Users can now use
self.log.debug("my message")
for debugging purposes in their user-defined rules. Debug messages will show up when runninggitlint --debug
. - Breaking: User-defined rule id's can no longer start with 'I', as those are reserved for built-in gitlint ignore rules.
- New
RegexOption
rule option type for use in user-defined rules. By using theRegexOption
, regular expressions are pre-validated at gitlint startup and compiled only once which is much more efficient when linting multiple commits. - Bugfixes:
- Improved UTF-8 fallback on Windows (ongoing - #96)
- Windows users can now use the 'edit' function of the
commit-msg
hook (#94) - Doc update: Users should use
--ulimit nofile=1024
when invoking gitlint using Docker (#129) - The
commit-msg
hook was broken in Ubuntu's gitlint package due to a python/python3 mismatch (#127) - Better error message when no git username is set (#149)
- Options can now actually be set to
None
(from code) to make them optional. - Ignore rules no longer have
"None"
as default regex, but an empty regex - effectively disabling them by default (as intended).
- Contrib Rules:
- Added 'ci' and 'build' to conventional commit types (#135)
- Under-the-hood: minor performance improvements (removed some unnecessary regex matching), test improvements, improved debug logging, CI runs on pull requests, PR request template.