Terinspirasi oleh jawaban Tim yang dibangun di atas jawaban teratas, ternyata hook siap-commit-msg mengambil argumen seperti apa yang terjadi . Seperti yang terlihat di preparasi-commit-msg default jika $ 2 adalah 'merge' maka itu adalah komit gabungan. Jadi case switch dapat diubah untuk menyertakan fungsi addBranchName () Tim.
Saya telah menyertakan preferensi saya sendiri untuk bagaimana menambahkan nama cabang, dan semua bagian yang tidak diberi komentar dari prepare-commit-msg.sample
hook default .
persiapkan-komit-pesan
#!/bin/sh
addMyBranchName() {
# Get name of current branch
NAME=$(git branch | grep '*' | sed 's/* //')
# First blank line is title, second is break for body, third is start of body
BODY=`cut -d \| -f 6 $1 | grep -v -E .\+ -n | cut -d ':' -f1 | sed '3q;d'`
# Put in string "(branch_name/): " at start of commit message body.
# For templates with commit bodies
if test ! -z $BODY; then
awk 'NR=='$BODY'{$0="\('$NAME'/\): "}1;' $1 > tmp_msg && mv tmp_msg "$1"
else
echo "title\n\n($NAME/):\n`cat $1`\n" > "$1"
fi
}
# You might need to consider squashes
case "$2,$3" in
# Commits that already have a message
commit,?*)
;;
# Messages are one line messages you decide how to handle
message,)
;;
# Merge commits
merge,)
# Comments out the "Conflicts:" part of a merge commit.
perl -i.bak -ne 's/^/# /, s/^# #/#/ if /^Conflicts/ .. /#/; print' "$1"
;;
# Non-merges with no prior messages
*)
addMyBranchName $1
;;
esac