diff --git a/githooks/prepare-commit-msg b/githooks/prepare-commit-msg new file mode 100755 index 0000000000000..96039558226b8 --- /dev/null +++ b/githooks/prepare-commit-msg @@ -0,0 +1,41 @@ +#!/usr/bin/sh +# +# An example hook script to prepare the commit log message. +# Called by "git commit" with the name of the file that has the +# commit message, followed by the description of the commit +# message's source. The hook's purpose is to edit the commit +# message file. If the hook fails with a non-zero status, +# the commit is aborted. +# +# To enable this hook, rename this file to "prepare-commit-msg". + +# This hook includes three examples. The first one removes the +# "# Please enter the commit message..." help message. +# +# The second includes the output of "git diff --name-status -r" +# into the message, just before the "git status" output. It is +# commented because it doesn't cope with --amend or with squashed +# commits. +# +# The third example adds a Signed-off-by line to the message, that can +# still be edited. This is rarely a good idea. + +COMMIT_MSG_FILE=$1 +COMMIT_SOURCE=$2 +SHA1=$3 + +# /usr/bin/perl -i.bak -ne 'print unless(m/^. Please enter the commit message/..m/^#$/)' "$COMMIT_MSG_FILE" + +if [[ -z "$COMMIT_SOURCE" ]] +then + echo "# Please enter the commit message for your changes. " > "$COMMIT_MSG_FILE" + for FILE in $(git diff --cached --name-only -r) + do + # According to files changed the commit message would start ": " + # src//file.txt - ":" + # file.txt - "file.txt:" + # /file.txt - ":" + echo "# $FILE: " | sed -E 's|src/+||g' | sed -r 's/(.*)(\/[a-z0-9.-]+)/\1 /' >> "$COMMIT_MSG_FILE" + done +fi +