2022-02-12 08:49:31 +00:00
|
|
|
#!/bin/sh -e
|
|
|
|
#
|
|
|
|
# This hook adds a comment for guidance about the commit message
|
|
|
|
# format on top of the default commit 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.
|
|
|
|
|
|
|
|
COMMIT_MSG_FILE=$1
|
|
|
|
COMMIT_SOURCE=$2
|
|
|
|
SHA1=$3
|
|
|
|
|
|
|
|
beginswith() { case $2 in "$1"*) true;; *) false;; esac; }
|
|
|
|
|
|
|
|
original=$(cat "$COMMIT_MSG_FILE")
|
|
|
|
if beginswith $'\n#' "$original"; then
|
|
|
|
# Find common path prefix of changed files
|
|
|
|
path=$(while read file
|
|
|
|
do test -z "$count" && common="$file" && count=$(expr length "$file") ||
|
2022-04-12 16:59:02 +00:00
|
|
|
while expr substr "$file" 1 $count != substr "$common" 1 $count >/dev/null
|
|
|
|
do let count--
|
|
|
|
done
|
2022-02-12 08:49:31 +00:00
|
|
|
done <<<"$(git -P diff --cached --name-only -r)" &&
|
2022-06-22 16:37:27 +00:00
|
|
|
expr substr "$common" 1 "$count" | sed 's|.local/bin/scripts|bin|') || exit 0
|
2022-08-21 10:29:51 +00:00
|
|
|
case "$path" in ([0-9]-*) path="${path#*-}";; esac
|
2022-02-12 08:49:31 +00:00
|
|
|
{
|
2024-07-25 09:42:47 +00:00
|
|
|
# Remove initial dot, file extension, trailing slash/dash/underscore
|
|
|
|
echo "$path" | sed 's|^\.||;s|\.\([a-z]*\)$||;s|[/_-]\?$|: |'
|
2022-02-12 08:49:31 +00:00
|
|
|
echo "$original"
|
|
|
|
} > "$COMMIT_MSG_FILE"
|
|
|
|
fi
|