Files
git-obs-hooks/scripts/prepare-commit-msg.d/convert-changes.sh
Matěj Cepl 267f3655b6 feat: add subpackage git-obs-hooks-script-convert-changes
Add subpackage with a working script, which causes `git commit`
to generate default commit message based on the last record in
the `*.changes` file.
2025-04-03 17:51:37 +02:00

35 lines
972 B
Bash
Executable File

#!/bin/sh
set -e
COMMIT_MSG_FILE="$1"
COMMIT_SOURCE="$2"
SHA1="${3:-HEAD}"
# {
# printf "COMMIT_MSG_FILE: %s\n" "$COMMIT_MSG_FILE" >>/tmp/prepare-commit-msg-log.txt
# printf "COMMIT_SOURCE: %s\n" "$COMMIT_SOURCE" >>/tmp/prepare-commit-msg-log.txt
# printf "SHA1: %s\n" "$SHA1" >>/tmp/prepare-commit-msg-log.txt
# printf "\n"
# } >>/tmp/prepare-commit-msg-log.txt
if test -z "$COMMIT_SOURCE"; then
if ! git add -- *.changes; then
echo "Error: Failed to add *.changes files." >&2
exit 1
fi
diff=$(git diff --no-color "$SHA1" -- *.changes \
| sed -E -n -e '/^\+[^+]/s/^\+//p' \
| sed -e '/^-\{4,\}/,+1d' \
| sed -e 's/^- *//')
if test -n "$diff"
then # Check if diff is not empty
TEMP_COMMIT_MSG=$(mktemp /tmp/moddiff.XXXXXX.msg)
trap 'rm -f $TEMP_COMMIT_MSG' EXIT
printf "%s\n" "$diff" >"$TEMP_COMMIT_MSG"
cat "$COMMIT_MSG_FILE" >>"$TEMP_COMMIT_MSG"
mv "$TEMP_COMMIT_MSG" "$COMMIT_MSG_FILE"
fi
fi