THIS IS A TEST INSTANCE ONLY! REPOSITORIES CAN BE DELETED AT ANY TIME!

Browse Source

git: add hook prepare-commit-msg

tags/v3.7.0_rc1
Jakub Jirutka 2 years ago
parent
commit
35d64d7e35
1 changed files with 45 additions and 0 deletions
  1. 45
    0
      .githooks/prepare-commit-msg

+ 45
- 0
.githooks/prepare-commit-msg View File

@@ -0,0 +1,45 @@
#!/bin/sh
#
# This hook adds prefix "<repo>/<pkgname>: " 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

Loading…
Cancel
Save