aboutsummaryrefslogtreecommitdiff
path: root/.githooks
diff options
context:
space:
mode:
authorJakub Jirutka <jakub@jirutka.cz>2017-10-14 21:52:15 +0200
committerJakub Jirutka <jakub@jirutka.cz>2017-10-14 21:52:15 +0200
commit35d64d7e359cdc1382eaa8680c48ced61e05c01c (patch)
tree4ec9c9a0ae3ae98f756012daea2ffd7b6107716e /.githooks
parent097cf28fcb19221db7d7e87d18040439d63c0241 (diff)
downloadalpine_aports-35d64d7e359cdc1382eaa8680c48ced61e05c01c.tar.bz2
alpine_aports-35d64d7e359cdc1382eaa8680c48ced61e05c01c.tar.xz
alpine_aports-35d64d7e359cdc1382eaa8680c48ced61e05c01c.zip
git: add hook prepare-commit-msg
Diffstat (limited to '.githooks')
-rwxr-xr-x.githooks/prepare-commit-msg45
1 files changed, 45 insertions, 0 deletions
diff --git a/.githooks/prepare-commit-msg b/.githooks/prepare-commit-msg
new file mode 100755
index 0000000000..44ae86d26a
--- /dev/null
+++ b/.githooks/prepare-commit-msg
@@ -0,0 +1,45 @@
1#!/bin/sh
2#
3# This hook adds prefix "<repo>/<pkgname>: " to the commit message when
4# committing changes of a single package.
5#
6MSG_FILE="$1"
7SOURCE="$2"
8
9longest_common_prefix() {
10 awk -F/ '
11 (NR == 1) { split($0, prefix); prefix_len = NF }
12 (NR > 1) {
13 for (i = 1; i <= prefix_len; i++) {
14 if (prefix[i] != $i) {
15 prefix_len = i - 1; break
16 }
17 }
18 }
19 (prefix_len == 0) { exit }
20 END {
21 res = prefix[1]
22 for (i = 2; i <= prefix_len; i++) {
23 res = res FS prefix[i]
24 }
25 print(res)
26 }'
27}
28
29prepend_msg() {
30 local prefix="$1"
31
32 printf '%s\n%s\n' "$prefix" "$(cat "$MSG_FILE")" > "$MSG_FILE"
33}
34
35
36# Do nothing if message has been given using -m, template, merge etc.
37[ -z "$SOURCE" ] || exit 0
38
39lcp=$(git diff-index --name-only --cached HEAD | longest_common_prefix)
40
41case "$lcp" in
42 [^.]*/*) prepend_msg "$(echo "$lcp" | cut -d/ -f1-2): ";;
43esac
44
45exit 0