#!/bin/sh # A sample hook to check commit messages created by `git commit` ################################################################ # # This example script checks commit messages for duplicate `Signed-off-by` # lines and rejects the commit if these are present. # # It is called by "git commit" with a single argument: the name of the file # that contains the final commit message, which would be used in the commit. # A a non-zero exit status after issuing an appropriate message stops the operation. # The hook is allowed to edit the commit message file by rewriting the file # containing it. # # To enable this hook remove the `.sample` suffix from this file entirely. # Check for duplicate Signed-off-by lines in the commit message. # The following command uses grep to find lines starting with "Signed-off-by: " # in the commit message file specified by the first argument `$1`. # It then sorts the lines, counts the number of occurrences of each line, # and removes any lines that occur only once. # If there are any remaining lines, it means there are duplicate Signed-off-by lines. test "$(grep '^Signed-off-by: ' "$1" | sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" = "" || { echo "Remove duplicate Signed-off-by lines and repeat the commit." 1>&2 exit 1 }