diff --git a/.gitlint b/.gitlint index fa44ba9223c..371355f0b86 100644 --- a/.gitlint +++ b/.gitlint @@ -1,6 +1,6 @@ # All these sections are optional, edit this file as you like. [general] -ignore=title-trailing-punctuation, T3 +ignore=title-trailing-punctuation, T3, title-max-length, T1 # verbosity should be a value between 1 and 3, the commandline -v flags take precedence over this verbosity = 3 # By default gitlint will ignore merge commits. Set to 'false' to disable. @@ -12,13 +12,12 @@ debug = false # See http://jorisroovers.github.io/gitlint/user_defined_rules for details extra-path=scripts/gitlint +[title-max-length-no-revert] +line-length=72 [body-max-line-count] max-line-count=200 -[title-max-length] -line-length=72 - [title-starts-with-subsystem] regex = ^(([^:]+):)(\s([^:]+):)*\s(.+)$ diff --git a/scripts/gitlint/zephyr_commit_rules.py b/scripts/gitlint/zephyr_commit_rules.py index e4664a846a5..dfeb35e13e8 100644 --- a/scripts/gitlint/zephyr_commit_rules.py +++ b/scripts/gitlint/zephyr_commit_rules.py @@ -55,6 +55,17 @@ class SignedOffBy(CommitRule): return return [RuleViolation(self.id, "Body does not contain a 'Signed-Off-By' line", line_nr=1)] +class TitleMaxLengthRevert(LineRule): + name = "title-max-length-no-revert" + id = "UC5" + target = CommitMessageTitle + options_spec = [IntOption('line-length', 72, "Max line length")] + violation_message = "Title exceeds max length ({0}>{1})" + + def validate(self, line, _commit): + max_length = self.options['line-length'].value + if len(line) > max_length and not line.startswith("Revert"): + return [RuleViolation(self.id, self.violation_message.format(len(line), max_length), line)] class TitleStartsWithSubsystem(LineRule): name = "title-starts-with-subsystem"