Something went wrong. Try again.
This repository has no description
Something went wrong. Try again.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273#!/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 0lcp=$(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)" ;;esacif [ -n "$prefix" ]; then prepend_msg "$prefix: "fiexit 0