Author: tchemit Date: 2014-05-25 08:08:28 +0200 (Sun, 25 May 2014) New Revision: 73 Url: http://forge.codelutin.com/projects/adminsys/repository/revisions/73 Log: refs #5074 (improve commit email) Added: scripts/redmine-tools/git-multimail-run.py Modified: scripts/redmine-tools/redmine-post-commit-git.sh Added: scripts/redmine-tools/git-multimail-run.py =================================================================== --- scripts/redmine-tools/git-multimail-run.py (rev 0) +++ scripts/redmine-tools/git-multimail-run.py 2014-05-25 06:08:28 UTC (rev 73) @@ -0,0 +1,139 @@ +#! /usr/bin/env python2 + +"""Example post-receive hook based on git-multimail. + +This script is a simple example of a post-receive hook implemented +using git_multimail.py as a Python module. It is intended to be +customized before use; see the comments in the script to help you get +started. + +It is possible to use git_multimail.py itself as a post-receive or +update hook, configured via git config settings and/or command-line +parameters. But for more flexibility, it can also be imported as a +Python module by a custom post-receive script as done here. The +latter has the following advantages: + +* The tool's behavior can be customized using arbitrary Python code, + without having to edit git_multimail.py. + +* Configuration settings can be read from other sources; for example, + user names and email addresses could be read from LDAP or from a + database. Or the settings can even be hardcoded in the importing + Python script, if this is preferred. + +This script is a very basic example of how to use git_multimail.py as +a module. The comments below explain some of the points at which the +script's behavior could be changed or customized. + +""" + +import sys +import os + +# If necessary, add the path to the directory containing +# git_multimail.py to the Python path as follows. (This is not +# necessary if git_multimail.py is in the same directory as this +# script): + +LIBDIR = '/usr/local/lib/python2.6/dist-packages/git_multimail-1.0.0-py2.6.egg' +sys.path.insert(0, LIBDIR) + +import git_multimail + +# It is possible to modify the output templates here; e.g.: + +#git_multimail.FOOTER_TEMPLATE = """\ +# +#-- \n\ +#This email was generated by the wonderful git-multimail tool. +#""" + +# Specify which "git config" section contains the configuration for +# git-multimail: +config = git_multimail.Config('multimailhook') + +forge = config.get('forge') +reponame = config.get('reponame') + + +git_multimail.REFCHANGE_INTRO_TEMPLATE = """\ +This is an automated email from the git hooks/post-receive script. + +New change to %(refname_type)s %(short_refname)s in repository %(repo_shortname)s. + +See http://git.{}/{}.git + +""".format(forge, reponame) + +git_multimail.REF_CREATED_SUBJECT_TEMPLATE = ( + '%(refname_type)s %(short_refname)s created' + ' (now %(newrev_short)s)' + ) +git_multimail.REF_UPDATED_SUBJECT_TEMPLATE = ( + '%(refname_type)s %(short_refname)s updated' + ' (%(oldrev_short)s -> %(newrev_short)s)' + ) +git_multimail.REF_DELETED_SUBJECT_TEMPLATE = ( + '%(refname_type)s %(short_refname)s deleted' + ' (was %(oldrev_short)s)' + ) + +git_multimail.REVISION_HEADER_TEMPLATE = """\ +Date: %(send_date)s +To: %(recipients)s +Subject: %(num)02d/%(tot)02d: %(oneline)s +MIME-Version: 1.0 +Content-Type: text/plain; charset=%(charset)s +Content-Transfer-Encoding: 8bit +From: %(fromaddr)s +Reply-To: %(reply_to)s +In-Reply-To: %(reply_to_msgid)s +References: %(reply_to_msgid)s +X-Git-Host: %(fqdn)s +X-Git-Repo: %(repo_shortname)s +X-Git-Refname: %(refname)s +X-Git-Reftype: %(refname_type)s +X-Git-Rev: %(rev)s +Auto-Submitted: auto-generated +""" + +git_multimail.REVISION_INTRO_TEMPLATE = """\ +This is an automated email from the git hooks/post-receive script. + +New commit to %(refname_type)s %(short_refname)s in repository %(repo_shortname)s. + +See http://git.{}/{}.git + +""".format(forge, reponame) + + +# Select the type of environment: +environment = git_multimail.GenericEnvironment(config=config) + +# Choose the method of sending emails based on the git config: +mailer = git_multimail.choose_mailer(config, environment) + +# Alternatively, you may hardcode the mailer using code like one of +# the following: + +# Use "/usr/sbin/sendmail -oi -t" to send emails. The envelopesender +# argument is optional: +#mailer = git_multimail.SendMailer( +# command=['/usr/sbin/sendmail', '-oi', '-t'], +# envelopesender='git-repo@example.com', +# ) + +# Use Python's smtplib to send emails. Both arguments are required. +#mailer = git_multimail.SMTPMailer( +# envelopesender='git-repo@example.com', +# # The smtpserver argument can also include a port number; e.g., +# # smtpserver='mail.example.com:25' +# smtpserver='mail.example.com', +# ) + +# OutputMailer is intended only for testing; it writes the emails to +# the specified file stream. +#mailer = git_multimail.OutputMailer(sys.stdout) + +# Read changes from stdin and send notification emails: +git_multimail.run_as_post_receive_hook(environment, mailer) Property changes on: scripts/redmine-tools/git-multimail-run.py ___________________________________________________________________ Added: svn:executable + * Modified: scripts/redmine-tools/redmine-post-commit-git.sh =================================================================== --- scripts/redmine-tools/redmine-post-commit-git.sh 2014-05-20 10:02:45 UTC (rev 72) +++ scripts/redmine-tools/redmine-post-commit-git.sh 2014-05-25 06:08:28 UTC (rev 73) @@ -18,7 +18,8 @@ wget "http://forge.$DOMAIN/sys/fetch_changesets?key=$SCM_API_KEY&id=$PROJECT_NAME" --spider &> /dev/null &2> /dev/null # send post-commit email -(cd /var/lib/git/git-$DOMAIN/$PROJECT_NAME.git ; python /usr/local/lib/python2.6/dist-packages/git_multimail-1.0.0-py2.6.egg/git_multimail.py) +#(cd /var/lib/git/git-$DOMAIN/$PROJECT_NAME.git ; python /usr/local/lib/python2.6/dist-packages/git_multimail-1.0.0-py2.6.egg/git_multimail.py) +(cd /var/lib/git/git-$DOMAIN/$PROJECT_NAME.git ; python /opt/redmine-tools/git-multimail-run.py) # touch project for nightly build touch /var/cache/redmine/nightly-build/$DOMAIN/$PROJECT_NAME.site
participants (1)
-
tchemit@users.forge.codelutin.com