summaryrefslogtreecommitdiffstats
path: root/docs/rules.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/rules.md')
-rw-r--r--docs/rules.md243
1 files changed, 243 insertions, 0 deletions
diff --git a/docs/rules.md b/docs/rules.md
new file mode 100644
index 0000000..173c5b1
--- /dev/null
+++ b/docs/rules.md
@@ -0,0 +1,243 @@
+# Overview #
+
+The table below shows an overview of all gitlint's built-in rules.
+Note that you can also [write your own user-defined rule](user_defined_rules.md) in case you don't find
+what you're looking for.
+The rest of this page contains details on the available configuration options for each built-in rule.
+
+ID | Name | gitlint version | Description
+------|-----------------------------|-------------------|-------------------------------------------
+T1 | title-max-length | >= 0.1.0 | Title length must be < 72 chars.
+T2 | title-trailing-whitespace | >= 0.1.0 | Title cannot have trailing whitespace (space or tab)
+T3 | title-trailing-punctuation | >= 0.1.0 | Title cannot have trailing punctuation (?:!.,;)
+T4 | title-hard-tab | >= 0.1.0 | Title cannot contain hard tab characters (\t)
+T5 | title-must-not-contain-word | >= 0.1.0 | Title cannot contain certain words (default: "WIP")
+T6 | title-leading-whitespace | >= 0.4.0 | Title cannot have leading whitespace (space or tab)
+T7 | title-match-regex | >= 0.5.0 | Title must match a given regex (default: .*)
+B1 | body-max-line-length | >= 0.1.0 | Lines in the body must be < 80 chars
+B2 | body-trailing-whitespace | >= 0.1.0 | Body cannot have trailing whitespace (space or tab)
+B3 | body-hard-tab | >= 0.1.0 | Body cannot contain hard tab characters (\t)
+B4 | body-first-line-empty | >= 0.1.0 | First line of the body (second line of commit message) must be empty
+B5 | body-min-length | >= 0.4.0 | Body length must be at least 20 characters
+B6 | body-is-missing | >= 0.4.0 | Body message must be specified
+B7 | body-changed-file-mention | >= 0.4.0 | Body must contain references to certain files if those files are changed in the last commit
+M1 | author-valid-email | >= 0.9.0 | Author email address must be a valid email address
+I1 | ignore-by-title | >= 0.10.0 | Ignore a commit based on matching its title
+I2 | ignore-by-body | >= 0.10.0 | Ignore a commit based on matching its body
+
+## T1: title-max-length ##
+
+ID | Name | gitlint version | Description
+------|-----------------------------|-----------------|-------------------------------------------
+T1 | title-max-length | >= 0.1 | Title length must be < 72 chars.
+
+### Options ###
+
+Name | gitlint version | Default | Description
+---------------|-----------------|---------|----------------------------------
+line-length | >= 0.2 | 72 | Maximum allowed title length
+
+## T2: title-trailing-whitespace ##
+
+ID | Name | gitlint version | Description
+------|-----------------------------|-----------------|-------------------------------------------
+T2 | title-trailing-whitespace | >= 0.1 | Title cannot have trailing whitespace (space or tab)
+
+
+## T3: title-trailing-punctuation ##
+
+ID | Name | gitlint version | Description
+------|-----------------------------|-----------------|-------------------------------------------
+T3 | title-trailing-punctuation | >= 0.1 | Title cannot have trailing punctuation (?:!.,;)
+
+
+## T4: title-hard-tab ##
+
+ID | Name | gitlint version | Description
+------|-----------------------------|-----------------|-------------------------------------------
+T4 | title-hard-tab | >= 0.1 | Title cannot contain hard tab characters (\t)
+
+
+## T5: title-must-not-contain-word ##
+
+ID | Name | gitlint version | Description
+------|-----------------------------|-----------------|-------------------------------------------
+T5 | title-must-not-contain-word | >= 0.1 | Title cannot contain certain words (default: "WIP")
+
+### Options ###
+
+Name | gitlint version | Default | Description
+---------------|-----------------|---------|----------------------------------
+words | >= 0.3 | WIP | Comma-separated list of words that should not be used in the title. Matching is case insensitive
+
+## T6: title-leading-whitespace ##
+
+ID | Name | gitlint version | Description
+------|-----------------------------|-----------------|-------------------------------------------
+T6 | title-leading-whitespace | >= 0.4 | Title cannot have leading whitespace (space or tab)
+
+## T7: title-match-regex ##
+
+ID | Name | gitlint version | Description
+------|-----------------------------|-----------------|-------------------------------------------
+T7 | title-match-regex | >= 0.5 | Title must match a given regex (default: .*)
+
+
+### Options ###
+
+Name | gitlint version | Default | Description
+---------------|-----------------|---------|----------------------------------
+regex | >= 0.5 | .* | [Python-style regular expression](https://docs.python.org/3.5/library/re.html) that the title should match.
+
+## B1: body-max-line-length ##
+
+ID | Name | gitlint version | Description
+------|-----------------------------|-----------------|-------------------------------------------
+B1 | body-max-line-length | >= 0.1 | Lines in the body must be < 80 chars
+
+### Options ###
+
+Name | gitlint version | Default | Description
+---------------|-----------------|---------|----------------------------------
+line-length | >= 0.2 | 80 | Maximum allowed line length in the commit message body
+
+## B2: body-trailing-whitespace ##
+
+ID | Name | gitlint version | Description
+------|-----------------------------|-----------------|-------------------------------------------
+B2 | body-trailing-whitespace | >= 0.1 | Body cannot have trailing whitespace (space or tab)
+
+
+## B3: body-hard-tab ##
+
+ID | Name | gitlint version | Description
+------|-----------------------------|-----------------|-------------------------------------------
+B3 | body-hard-tab | >= 0.1 | Body cannot contain hard tab characters (\t)
+
+
+## B4: body-first-line-empty ##
+
+ID | Name | gitlint version | Description
+------|-----------------------------|-----------------|-------------------------------------------
+B4 | body-first-line-empty | >= 0.1 | First line of the body (second line of commit message) must be empty
+
+## B5: body-min-length ##
+
+ID | Name | gitlint version | Description
+------|-----------------------------|-----------------|-------------------------------------------
+B5 | body-min-length | >= 0.4 | Body length must be at least 20 characters. In versions >= 0.8.0, gitlint will not count newline characters.
+
+### Options ###
+
+Name | gitlint version | Default | Description
+---------------|-----------------|---------|----------------------------------
+min-length | >= 0.4 | 20 | Minimum number of required characters in body
+
+## B6: body-is-missing ##
+
+ID | Name | gitlint version | Description
+------|-----------------------------|-----------------|-------------------------------------------
+B6 | body-is-missing | >= 0.4 | Body message must be specified
+
+
+### Options ###
+
+Name | gitlint version | Default | Description
+----------------------|-----------------|-----------|----------------------------------
+ignore-merge-commits | >= 0.4 | true | Whether this rule should be ignored during merge commits. Allowed values: true,false.
+
+## B7: body-changed-file-mention ##
+
+ID | Name | gitlint version | Description
+------|-----------------------------|-----------------|-------------------------------------------
+B7 | body-changed-file-mention | >= 0.4 | Body must contain references to certain files if those files are changed in the last commit
+
+### Options ###
+
+Name | gitlint version | Default | Description
+----------------------|-----------------|--------------|----------------------------------
+files | >= 0.4 | (empty) | Comma-separated list of files that need to an explicit mention in the commit message in case they are changed.
+
+
+
+## M1: author-valid-email ##
+
+ID | Name | gitlint version | Description
+------|-----------------------------|-----------------|-------------------------------------------
+M1 | author-valid-email | >= 0.8.3 | Author email address must be a valid email address
+
+!!! note
+ Email addresses are [notoriously hard to validate and the official email valid spec is often too loose for any real world application](http://stackoverflow.com/a/201378/381010).
+ Gitlint by default takes a pragmatic approach and requires users to enter email addresses that contain a name, domain and tld and has no spaces.
+
+
+
+### Options ###
+
+Name | gitlint version | Default | Description
+----------------------|-------------------|------------------------------|----------------------------------
+regex | >= 0.9.0 | ```[^@ ]+@[^@ ]+\.[^@ ]+``` | Regex the commit author email address is matched against
+
+
+!!! note
+ An often recurring use-case is to only allow email addresses from a certain domain. The following regular expression achieves this: ```[^@]+@foo.com```
+
+
+## I1: ignore-by-title ##
+
+ID | Name | gitlint version | Description
+------|-----------------------------|-----------------|-------------------------------------------
+I1 | ignore-by-title | >= 0.10.0 | Ignore a commit based on matching its title.
+
+
+### Options ###
+
+Name | gitlint version | Default | Description
+----------------------|-------------------|------------------------------|----------------------------------
+regex | >= 0.10.0 | None | Regex to match against commit title. On match, the commit will be ignored.
+ignore | >= 0.10.0 | all | Comma-seperated list of rule names or ids to ignore when this rule is matched.
+
+### Examples
+
+#### .gitlint
+
+```ini
+# Match commit titles starting with Release
+# For those commits, ignore title-max-length and body-min-length rules
+[ignore-by-title]
+regex=^Release(.*)
+ignore=title-max-length,body-min-length
+# ignore all rules by setting ignore to 'all'
+# ignore=all
+```
+
+## I2: ignore-by-body ##
+
+ID | Name | gitlint version | Description
+------|-----------------------------|-----------------|-------------------------------------------
+I2 | ignore-by-body | >= 0.10.0 | Ignore a commit based on matching its body.
+
+
+### Options ###
+
+Name | gitlint version | Default | Description
+----------------------|-------------------|------------------------------|----------------------------------
+regex | >= 0.10.0 | None | Regex to match against each line of the body. On match, the commit will be ignored.
+ignore | >= 0.10.0 | all | Comma-seperated list of rule names or ids to ignore when this rule is matched.
+
+### Examples
+
+#### .gitlint
+
+```ini
+# Ignore all commits with a commit message body with a line that contains 'release'
+[ignore-by-body]
+regex=(.*)release(.*)
+ignore=all
+
+# For matching commits, only ignore rules T1, body-min-length, B6.
+# You can use both names as well as ids to refer to other rules.
+[ignore-by-body]
+regex=(.*)release(.*)
+ignore=T1,body-min-length,B6
+``` \ No newline at end of file