#!/bin/sh #shift FROM=$USER@mysql.com COMMITS=commits@lists.mysql.com DOCS=docs-commit@mysql.com LIMIT=10000 VERSION="maria" BKROOT=`bk root` if [ -x /usr/sbin/sendmail ]; then SENDMAIL=/usr/sbin/sendmail else SENDMAIL=sendmail fi if [ "$REAL_EMAIL" = "" ] then echo "Warning: you must set REAL_EMAIL in your profile" else FROM=$REAL_EMAIL fi BK_STATUS=$BK_STATUS$BK_COMMIT if [ "$BK_STATUS" = OK ] then HAS_ACTUAL_CHANGES=`bk cset -r+ -d | grep -v "^#"` if [ "$HAS_ACTUAL_CHANGES" = "" ] then echo ChangeSet had no real changes, not sending emails exit fi IS_MERGE=`bk changes -r+ -k -m` if [ "$IS_MERGE" = "" ] then echo Merge changeset, not sending mails exit fi CHANGESET=`bk -R prs -r+ -h -d':P:::I:' ChangeSet` CSETKEY=`bk -R prs -r+ -h -d':KEY:' ChangeSet` # # composing subject lines of commit mails. # if a fix targets to a WL and there is a bug referred # then X-Bug mail header will contain the first found bug's number # BUG=`bk -R prs -r+ -h -d':C:' ChangeSet | \ sed -ne 's/[Bb][Uu][Gg] *# *\([0-9][0-9]*\).*$/BUG#\1/ s/.*BUG#\([0-9][0-9]*\)/\1/p'` WL=`bk -R prs -r+ -h -d':C:' ChangeSet | \ sed -ne 's/[Ww][Ll] *# *\([0-9][0-9]*\).*$/WL#\1/ s/.*\(WL#[0-9][0-9]*\)/ \1/p'` if [ "$BUG" = "" ] then # TO=dev-public@mysql.com BS="" BH="" else # TO=dev-bugs@mysql.com BS=" BUG#$BUG" # need newline here BH="X-Bug: $BUG " fi #++ # commits@ or dev-private@ mail #-- LIST="commits" TO="commits@lists.mysql.com" if [ -f .tree-is-private ] then LIST="dev-private" TO="dev-private@mysql.com" fi echo "Notifying $LIST list at $TO" ( cat < From: $FROM To: $TO Subject: bk commit into $VERSION tree ($CHANGESET)$BS X-CSetKey: <$CSETKEY> $BH Below is the list of changes that have just been committed into a local $VERSION repository of $USER. When $USER does a push these changes will be propagated to the main repository and, within 24 hours after the push, to the public repository. For information on how to access the public repository see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html EOF bk changes -v -r+ bk rset -r+ -ah | bk gnupatch -h -dup -T ) > $BKROOT/BitKeeper/tmp/commits.txt $SENDMAIL -t < $BKROOT/BitKeeper/tmp/commits.txt #++ # docs-commit@ mail # Picks up anything under the Docs subdirectory (relevant for docs team). #-- bk changes -v -r+ | grep -q " Docs/" if [ $? -eq 0 ] then echo "Notifying docs list at $DOCS" ( cat < From: $FROM To: $DOCS Subject: bk commit - $VERSION tree (Manual) ($CHANGESET)$BS EOF bk changes -v -r+ bk rset -r+ -ah | bk gnupatch -h -dup -T ) > $BKROOT/BitKeeper/tmp/docs.txt $SENDMAIL -t < $BKROOT/BitKeeper/tmp/docs.txt fi else echo "commit failed because '$BK_STATUS', you may need to re-clone..." fi