]>
git.madduck.net Git - code/fbi-announce.git/blobdiff - fbi-announce.sh
madduck's git repository
Every one of the projects in this repository is available at the canonical
URL git://git.madduck.net/madduck/pub/<projectpath> — see
each project's metadata for the exact URL.
All patches and comments are welcome. Please squash your changes to logical
commits before using git-format-patch and git-send-email to
patches@ git. madduck. net .
If you'd read over the Git project's submission guidelines and adhered to them,
I'd be especially grateful.
SSH access, as well as push access can be individually
arranged .
If you use my repositories frequently, consider adding the following
snippet to ~/.gitconfig and using the third clone URL listed for each
project:
[url "git://git.madduck.net/madduck/"]
insteadOf = madduck:
# 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-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:
# 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.
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
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
# 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
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')
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')
${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=$(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\""
else
msg=$(echo "$msg" | sed -re 's,@@([^@]+)@@,${\1},g')
eval "msg=\"$msg\""
${sendmail} <<_eom
${from:+From: ${from}
}To: ${to}
${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