From 35d64d7e359cdc1382eaa8680c48ced61e05c01c Mon Sep 17 00:00:00 2001 From: Jakub Jirutka Date: Sat, 14 Oct 2017 21:52:15 +0200 Subject: git: add hook prepare-commit-msg --- .githooks/prepare-commit-msg | 45 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100755 .githooks/prepare-commit-msg (limited to '.githooks') diff --git a/.githooks/prepare-commit-msg b/.githooks/prepare-commit-msg new file mode 100755 index 00000000000..44ae86d26a2 --- /dev/null +++ b/.githooks/prepare-commit-msg @@ -0,0 +1,45 @@ +#!/bin/sh +# +# This hook adds prefix "/: " to the commit message when +# committing changes of a single package. +# +MSG_FILE="$1" +SOURCE="$2" + +longest_common_prefix() { + awk -F/ ' + (NR == 1) { split($0, prefix); prefix_len = NF } + (NR > 1) { + for (i = 1; i <= prefix_len; i++) { + if (prefix[i] != $i) { + prefix_len = i - 1; break + } + } + } + (prefix_len == 0) { exit } + END { + res = prefix[1] + for (i = 2; i <= prefix_len; i++) { + res = res FS prefix[i] + } + print(res) + }' +} + +prepend_msg() { + local prefix="$1" + + printf '%s\n%s\n' "$prefix" "$(cat "$MSG_FILE")" > "$MSG_FILE" +} + + +# Do nothing if message has been given using -m, template, merge etc. +[ -z "$SOURCE" ] || exit 0 + +lcp=$(git diff-index --name-only --cached HEAD | longest_common_prefix) + +case "$lcp" in + [^.]*/*) prepend_msg "$(echo "$lcp" | cut -d/ -f1-2): ";; +esac + +exit 0 -- cgit v1.2.3