In the process, update the README to point to how to add the githooks folder. I had to go to aports to find the command. Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/7077>
72 lines
1.3 KiB
Bash
Executable file
72 lines
1.3 KiB
Bash
Executable file
#!/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)
|
|
prefix=""
|
|
|
|
case "$lcp" in
|
|
extra-repos/systemd/systemd/*)
|
|
prefix="systemd"
|
|
;;
|
|
extra-repos/systemd/*)
|
|
prefix="systemd/$(echo "$lcp" | cut -d/ -f3)"
|
|
;;
|
|
device/*/*)
|
|
prefix="$(echo "$lcp" | cut -d/ -f3)"
|
|
;;
|
|
docs/*.adoc)
|
|
prefix="docs/$(basename $lcp .adoc)"
|
|
;;
|
|
docs/*)
|
|
prefix="docs"
|
|
;;
|
|
device/*)
|
|
# Multiple packages touched for same device category. More
|
|
# logic could be added to detect if they all belong to same
|
|
# device.
|
|
;;
|
|
[^.]*/*)
|
|
prefix="$(echo "$lcp" | cut -d/ -f1-2)"
|
|
;;
|
|
esac
|
|
|
|
if [ -n "$prefix" ]; then
|
|
prepend_msg "$prefix: "
|
|
fi
|
|
|
|
exit 0
|