You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
90 lines
2.9 KiB
90 lines
2.9 KiB
#! /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)
|
|
|