| #! /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 = 'path/to/directory/containing/module' |
| #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') |
| |
| |
| # Select the type of environment: |
| environment = git_multimail.GenericEnvironment(config=config) |
| #environment = git_multimail.GitoliteEnvironment(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) |