टिम के उत्तर से प्रेरित होकर जो शीर्ष उत्तर पर बनता है, यह पता चलता है कि तैयार-कमिट-मेस हुक एक तर्क के रूप में लेता है कि किस प्रकार की प्रतिबद्धता हो रही है । जैसा कि डिफ़ॉल्ट तैयार-कमिट-मेस में देखा जाता है यदि $ 2 'मर्ज' है तो यह मर्ज कमिट है। इस प्रकार टिम के ऐडब्रांचनाम () फ़ंक्शन को शामिल करने के लिए केस स्विच को बदला जा सकता है।
मैंने शाखा के नाम, और डिफ़ॉल्ट prepare-commit-msg.sample
हुक के सभी अपूर्ण भागों को जोड़ने के लिए अपनी स्वयं की प्राथमिकता शामिल की है ।
तैयार-लिखें-msg
#!/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