diff options
author | Jakub Jirutka <jakub@jirutka.cz> | 2017-10-14 21:52:15 +0200 |
---|---|---|
committer | Jakub Jirutka <jakub@jirutka.cz> | 2017-10-14 21:52:15 +0200 |
commit | 35d64d7e359cdc1382eaa8680c48ced61e05c01c (patch) | |
tree | 4ec9c9a0ae3ae98f756012daea2ffd7b6107716e /.githooks | |
parent | 097cf28fcb19221db7d7e87d18040439d63c0241 (diff) | |
download | alpine_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-msg | 45 |
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 | # | ||
6 | MSG_FILE="$1" | ||
7 | SOURCE="$2" | ||
8 | |||
9 | longest_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 | |||
29 | prepend_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 | |||
39 | lcp=$(git diff-index --name-only --cached HEAD | longest_common_prefix) | ||
40 | |||
41 | case "$lcp" in | ||
42 | [^.]*/*) prepend_msg "$(echo "$lcp" | cut -d/ -f1-2): ";; | ||
43 | esac | ||
44 | |||
45 | exit 0 | ||