#!/bin/sh # # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you 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. # # This script checks the commit log message. if [ ! -s "$1" ] || ! grep -v '^#' "$1" | grep -q '[^[:space:]]'; then echo "Aborting commit due to empty commit message." >&2 exit 1 fi # Separate subject from body with a blank line line2=$(sed '2q;d' "$1") if [ -n "$line2" ] && echo "$line2" | grep -qv '^#'; then echo "FAIL: put a blank line to separate subject from body" >&2 head -n 2 "$1" >&2 exit 1 fi # Limit the subject line to 50 characters subject=$(head -n 1 "$1") subject_len=$(printf "$subject" | wc -m) if [ $subject_len -gt 72 ]; then echo "FAIL: subject lines cannot be longer than 72 characters" >&2 echo "$subject" >&2 exit 1 elif [ $subject_len -gt 50 ]; then echo "Subject lines less than or equal to 50 characters are preferred." fi # Capitalize the subject line if echo "$subject" | grep -qv '^[[:upper:]]'; then echo "FAIL: begin the subject line with a capital letter" >&2 echo "$subject" >&2 exit 1 fi # Do not end the subject line with a period if echo "$subject" | grep -q '\.$'; then echo "FAIL: trailing punctuation is unnecessary in subject lines" >&2 echo "$subject" >&2 exit 1 fi # Wrap the body at 72 characters lines=$(grep -nE '.{73,}' "$1") if [ -n "$lines" ]; then echo "FAIL: wrap the body at 72 characters" >&2 echo "$lines" >&2 exit 1 fi