cloudstack/tools/git/prepare-commit-msg
Marcus Sorensen a3c9a2b22d Summary: prepare-commit-msg skip merges, -m flag, squash, template
Detail: prepare-commit-msg now is skipped if -m flag is supplied, if user has
a template defined, if commit is a squash or a merge.

BUG-ID : none
Reviewed-by: Marcus Sorensen <marcus@betterservers.com>
Reported-by: Marcus Sorensen <marcus@betterservers.com>
Signed-off-by: Marcus Sorensen <marcus@betterservers.com> 1350600822 -0600
2012-10-18 16:53:42 -06:00

87 lines
2.2 KiB
Bash
Executable File

#!/bin/sh
#
# An example hook script to prepare the commit log message.
# Called by "git commit" with the name of the file that has the
# commit message, followed by the description of the commit
# message's source. The hook's purpose is to edit the commit
# message file. If the hook fails with a non-zero status,
# the commit is aborted.
#
# To enable this hook, rename this file to "prepare-commit-msg".
# This hook includes three examples. The first comments out the
# "Conflicts:" part of a merge commit.
#
# The second includes the output of "git diff --name-status -r"
# into the message, just before the "git status" output. It is
# commented because it doesn't cope with --amend or with squashed
# commits.
#
# The third example adds a Signed-off-by line to the message, that can
# still be edited. This is rarely a good idea.
#case "$2,$3" in
# merge,)
# /usr/bin/perl -i.bak -ne 's/^/# /, s/^# #/#/ if /^Conflicts/ .. /#/; print' "$1" ;;
# ,|template,)
# /usr/bin/perl -i.bak -pe '
# print "\n" . `git diff --cached --name-status -r`
# if /^#/ && $first++ == 0' "$1" ;;
# *) ;;
#esac
# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p')
# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1"
run_generic_commit () {
local file=$1
cat <<EOF > $file
################################# 80 chars #####################################
# The following is an example of how to fill out the above form. Please limit
# your formatting to 80 cols.
#
# Summary: One line description of commit, followed by blank line
#
# Detail: Multi-line description, followed by blank line
#
# BUG-ID: CLOUDSTACK-9999
# Reviewed-by: Bar Barlington <bar@example.com>, Foo McFooson <foo@example.com>
# Reported-by: Baz Bazelli <baz@example.com>
# Signed-off-by: You <you@yourdomain.com>
#
$ORIGINAL
EOF
SOB=$(git var GIT_AUTHOR_IDENT)
sed -i "1s/^/################################# 80 chars #####################################\n\
Summary: \n\n\
Detail: \n\n\
BUG-ID : \n\
Reviewed-by: \n\
Reported-by: \n\
Signed-off-by: ${SOB}\n\n/" $file
}
case "$2,$3" in
merge,*)
;;
template,*)
;;
message,*)
;;
squash,*)
;;
*)
run_generic_commit $1
;;
esac