From d082729a664b479ca020e81596db06ae34fd00d4 Mon Sep 17 00:00:00 2001 From: Georg Pfuetzenreuter Date: Sun, 19 Feb 2023 19:48:59 +0100 Subject: [PATCH] Add commit linting - add gommit configuration - add wrapper script Signed-off-by: Georg Pfuetzenreuter --- .gommit.toml | 23 +++++++++++++++++++++++ bin/lint-commits.pl | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 .gommit.toml create mode 100755 bin/lint-commits.pl diff --git a/.gommit.toml b/.gommit.toml new file mode 100644 index 0000000..eaffd69 --- /dev/null +++ b/.gommit.toml @@ -0,0 +1,23 @@ +[config] +exclude-merge-commits=true +check-summary-length=true +summary-length=50 + +[matchers] +all='^(?:(?:Add|Remove|Update|Enable|Disable) |(?:role\.\w+|profile\.\w+): )[\w ]+\n(?:(?:\n\- .*)+\n)?(?:\nSigned-off-by: \w+ \w+ <.*@.*>)' + +[examples] +summary_variant_one=""" +[Add|Remove|Update|Enable|Disable] this and that +""" + +summary_variant_two=""" +[role.$role|profile.$profile]: this and that +""" + +body_message=""" +- an optional body line +- another optional body line + +Signed-off-by: Max Mandatory +""" diff --git a/bin/lint-commits.pl b/bin/lint-commits.pl new file mode 100755 index 0000000..0b17f94 --- /dev/null +++ b/bin/lint-commits.pl @@ -0,0 +1,39 @@ +#!/usr/bin/perl +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +use v5.26; + +my ($branch_main) = @ARGV; + +if(!$branch_main){ + $branch_main = "master" +} + +`git ls-remote origin $branch_main` =~ /([a-f0-9]{40})/; + +my $refHead = `git rev-parse HEAD`; +my $refTail = $1; + +chomp($refHead); +chomp($refTail); + +if ($refHead eq $refTail) { + exit 0; +} + +system "gommit check range $refTail $refHead"; + +if ($? > 0) { + exit 1; +}