From 50694603867093888fb581b5e1d2444b915e5bc1 Mon Sep 17 00:00:00 2001 From: Andrew Grimberg Date: Wed, 5 May 2021 09:52:33 -0700 Subject: [PATCH] CI: Configure gitlint for Conventional Commits Turn on Conventional Commit message subject validation. This will affect CI specifically, but developers can avoid having CI fail by assuring that they have installed pre-commit and that they have also run pre-commit install --hook-type commit-msg The above is needed because pre-commit does not install commit-msg hooks by default Change-Id: If45c7a256f7d769eb092d867217468b9d6c53384 Signed-off-by: Andrew Grimberg --- .gitlint | 96 ++++++++++++++++++++++ .../conventional_commit-3d9847194b514c13.yaml | 10 +++ 2 files changed, 106 insertions(+) create mode 100644 .gitlint create mode 100644 releasenotes/notes/conventional_commit-3d9847194b514c13.yaml diff --git a/.gitlint b/.gitlint new file mode 100644 index 00000000..db97d76c --- /dev/null +++ b/.gitlint @@ -0,0 +1,96 @@ +# All these sections are optional, edit this file as you like. +[general] +# Ignore certain rules, you can reference them by their id or by their full +# name +# ignore=title-trailing-punctuation, T3 + +# verbosity should be a value between 1 and 3, the command line -v flags take +# precedence over this +# verbosity = 2 + +# By default gitlint will ignore merge commits. Set to 'false' to disable. +# ignore-merge-commits=true + +# By default gitlint will ignore fixup commits. Set to 'false' to disable. +# ignore-fixup-commits=true + +# By default gitlint will ignore squash commits. Set to 'false' to disable. +# ignore-squash-commits=true + +# Enable debug mode (prints more output). Disabled by default. +# debug=true + +# Set the extra-path where gitlint will search for user defined rules +# See http://jorisroovers.github.io/gitlint/user_defined_rules for details +# extra-path=examples/ + +contrib=contrib-title-conventional-commits,contrib-body-requires-signed-off-by + +# [title-max-length] +# line-length=80 + +# [title-must-not-contain-word] +# Comma-separated list of words that should not occur in the title. Matching is +# case insensitive. It's fine if the keyword occurs as part of a larger word +# (so "WIPING" will not cause a violation, but "WIP: my title" will. +# words=wip + +# [title-match-regex] +# python like regex (https://docs.python.org/2/library/re.html) that the +# commit-msg title must be matched to. +# Note that the regex can contradict with other rules if not used correctly +# (e.g. title-must-not-contain-word). +# regex=^US[0-9]* + +# [B1] +# B1 = body-max-line-length +# line-length=120 + +# [body-min-length] +# min-length=5 + +# [body-is-missing] +# Whether to ignore this rule on merge commits (which typically only have a title) +# default = True +# ignore-merge-commits=false + +# [body-changed-file-mention] +# List of files that need to be explicitly mentioned in the body when they are +# changed This is useful for when developers often erroneously edit certain +# files or git submodules. By specifying this rule, developers can only change +# the file when they explicitly reference it in the commit message. +# files=gitlint/rules.py,README.md + +# [author-valid-email] +# python like regex (https://docs.python.org/2/library/re.html) that the +# commit author email address should be matched to +# For example, use the following regex if you only want to allow email +# addresses from foo.com +# regex=[^@]+@foo.com + +# [ignore-by-title] +# Ignore certain rules for commits of which the title matches a regex +# E.g. Match commit titles that start with "Release" +# regex=^Release(.*) +# +# Ignore certain rules, you can reference them by their id or by their full name +# Use 'all' to ignore all rules +# ignore=T1,body-min-length + +# [ignore-by-body] +# Ignore certain rules for commits of which the body has a line that matches a +# regex +# E.g. Match bodies that have a line that contain "release" +# regex=(.*)release(.*) +# +# Ignore certain rules, you can reference them by their id or by their full name +# Use 'all' to ignore all rules +# ignore=T1,body-min-length + +# Enable Conventional Commit subject line enforcement +# https://www.conventionalcommits.org/en/v1.0.0/ +# +# Since we want all subjects to be well formed, enforce the topics +# to the following (fairly standard) topics and require them to be Mixed Case +[contrib-title-conventional-commits] +types=Fix,Feat,Chore,Docs,Style,Refactor,Perf,Test,Revert,CI,Build diff --git a/releasenotes/notes/conventional_commit-3d9847194b514c13.yaml b/releasenotes/notes/conventional_commit-3d9847194b514c13.yaml new file mode 100644 index 00000000..c642e8b9 --- /dev/null +++ b/releasenotes/notes/conventional_commit-3d9847194b514c13.yaml @@ -0,0 +1,10 @@ +--- +other: + - | + Conventional Commit message subject lines are now enforced. This affects + CI. Additionally, if developers want to protect themselves from CI failing + on this please make sure of the following + + * you have pre-commit installed + * that you have run + pre-commit install --hook-type commit-msg -- 2.16.6