# hooks.fbi-component an optional component name
# hooks.fbi-url-template the template to the gitweb URL (containing @@sha1@@)
# hooks.fbi-emailsender the sender address to use in the email
+# hooks.fbi-emailcc carbon-copy recipients (comma-separated) if the message
# hooks.fbi-refwidth the width of references to show (default 7)
# hooks.fbi-noisy include the entire log message in the announcement
# hooks.fbi-msg-template the template for the message to be sent (default:
-# [@@component@@/]@@project@@: @@author@@: \
-# @@logmessage@@ [@@ref@@] @@url@@)
+# {@@component@@/}@@project@@[@@ref@@]: @@author@@: \
+# @@logmessage@@ [@@url@@])
#
-# The hook is meant ot be run either from a post-commit hook or an update hook. If run in
-# a central repository where people push to you want to run it in the update hook!
-#
-# post-commit: It parses latest commit and current HEAD to get the information it needs.
-#
-# update: You have to call it once per merged commit:
-#
-# refname=$1
-# oldhead=$2
-# newhead=$3
-# for merged in $(git rev-list ${oldhead}..${newhead} | tac) ; do
-# /path/to/ciabot.bash ${refname} ${merged}
-# done
+# The hook is meant ot be run from the Git post-receive hook.
#
set -eu
noisy=$(git config hooks.fbi-noisy 2>/dev/null || echo false)
from=$(git config hooks.fbi-emailsender 2>/dev/null ||:)
to="commit@commit.ganneff.de" #TODO: possibly factor out to config
+cc=$(git config hooks.fbi-emailcc 2>/dev/null ||:)
# mail submission client to use
-if [ -n "$FBI_ANNOUNCE_TO_STDOUT" ]; then
+if [ -n "${FBI_ANNOUNCE_TO_STDOUT:-}" ]; then
sendmail="cat"
echo >&2 'I: outputting to stdout since $FBI_ANNOUNCE_TO_STDOUT is set.'
else
rawcommit=$(git cat-file commit ${merged})
author=$(echo "${rawcommit}" | sed -rne 's,^author (.+) <.*,\1,p')
-logmessage=$(echo "${rawcommit}" | sed -e '1,/^$/d;s,&,\&,g;s,<,\<,g;s,>,\>,g')
+logmessage=$(echo "${rawcommit}" | sed -e '1,/^$/d')
${noisy} || logmessage=$(echo "${logmessage}" | head -n2)
ts=$(echo "${rawcommit}" | sed -n -e '/^author .*> \([0-9]\+\).*$/s--\1-p')
msg=$(git config hooks.fbi-msg-template 2>/dev/null ||:)
if [ -z "${msg}" ]; then
- msg="${component:+$component/}${refname}: ${author}: ${logmessage} [${ref}] ${url}"
+ msg="${component:+$component/}${refname}[${ref}]: ${author}: ${logmessage} [${url}]"
else
msg=$(echo "$msg" | sed -re 's,@@([^@]+)@@,${\1},g')
eval "msg=\"$msg\""
fi
+# trim $msg of empty []'s in case no URL was provided, might be better done in
+# the above by making the generation conditional, but this will also do for
+# now.
+msg="${msg% []}"
+
${sendmail} <<_eom
${from:+From: ${from}
}To: ${to}
-Subject: Announce ${project}
-Message-Id: <fbi-announce.${ref}@${project}>
+${cc:+Cc: ${cc}
+}Subject: Announce ${project}
+Message-Id: <fbi-announce.${project}.${ref}@$(hostname --fqdn)>
+Content-type: text/plain; charset=utf-8
${msg}
_eom