summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew Grimberg <agrimberg@linuxfoundation.org>2023-06-29 10:23:58 -0700
committerAndrew Grimberg <agrimberg@linuxfoundation.org>2023-06-29 10:23:58 -0700
commit2ce88a00aeb774b7a16bb9a5809dcb47613ac2da (patch)
treeea7c98d7adbc669fafbaaba83ece32bad4885e78
parent30619fca8aa7f31a6ae81cd1ca6485fd3ebd34e3 (diff)
CI: Add pre-commit bits
Change-Id: Ie207583b16bda0f1851dcf31e6dfae386a59945c Signed-off-by: Andrew Grimberg <agrimberg@linuxfoundation.org>
-rw-r--r--.editorconfig25
-rw-r--r--.gitlint97
-rw-r--r--.pre-commit-config.yaml32
-rw-r--r--.yamllint11
4 files changed, 165 insertions, 0 deletions
diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 00000000..8700277e
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,25 @@
+root = true
+
+[*]
+end_of_line = lf
+insert_final_newline = true
+trim_trailing_whitespace = true
+indent_style = space
+
+[*.json]
+indent_size = 2
+
+[*.rst]
+indent_size = 4
+
+[*.markdown]
+indent_size = 4
+max_line_length = 80
+
+[*.sh]
+indent_size = 4
+max_line_length = 80
+
+[*.yaml]
+indent_size = 2
+max_line_length = 120
diff --git a/.gitlint b/.gitlint
new file mode 100644
index 00000000..8d37da19
--- /dev/null
+++ b/.gitlint
@@ -0,0 +1,97 @@
+# 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
+contrib=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/.pre-commit-config.yaml b/.pre-commit-config.yaml
new file mode 100644
index 00000000..b1080484
--- /dev/null
+++ b/.pre-commit-config.yaml
@@ -0,0 +1,32 @@
+---
+repos:
+ - repo: https://github.com/pre-commit/pre-commit-hooks
+ rev: v4.4.0
+ hooks:
+ - id: trailing-whitespace
+ - id: check-executables-have-shebangs
+ stages: [manual]
+ - id: check-json
+ exclude: (.vscode|.devcontainer)
+ - id: no-commit-to-branch
+ args:
+ - --branch=dev
+ - --branch=master
+ - --branch=main
+ - --branch=rc
+
+ - repo: https://github.com/jorisroovers/gitlint
+ rev: v0.19.1
+ hooks:
+ - id: gitlint
+
+ # - repo: https://github.com/adrienverge/yamllint.git
+ # rev: v1.32.0
+ # hooks:
+ # - id: yamllint
+
+ # - repo: https://github.com/pre-commit/mirrors-prettier
+ # rev: v3.0.0-alpha.9-for-vscode
+ # hooks:
+ # - id: prettier
+ # stages: [commit]
diff --git a/.yamllint b/.yamllint
new file mode 100644
index 00000000..d4497f85
--- /dev/null
+++ b/.yamllint
@@ -0,0 +1,11 @@
+---
+extends: default
+
+rules:
+ empty-lines:
+ max-end: 1
+ line-length:
+ max: 120
+ comments:
+ # prettier forces 1 space comment separator
+ min-spaces-from-content: 1