f4609b896f
This also bumps the stable nixpkgs to 20.09 as of 2020-11-21, because there is some breakage in the git build related to the netrc credentials helper which someone has taken care of in nixpkgs. The stable channel is not used for anything other than git, so this should be fine. Change-Id: I3575a19dab09e1e9556cf8231d717de9890484fb
101 lines
3.5 KiB
Python
Executable file
101 lines
3.5 KiB
Python
Executable file
#! /usr/bin/env python
|
|
|
|
"""Example post-receive hook based on git-multimail.
|
|
|
|
The simplest way to use git-multimail is to use the script
|
|
git_multimail.py directly as a post-receive hook, and to configure it
|
|
using Git's configuration files and command-line parameters. You can
|
|
also write your own Python wrapper for more advanced configurability,
|
|
using git_multimail.py as a Python module.
|
|
|
|
This script is a simple example of such a post-receive hook. It is
|
|
intended to be customized before use; see the comments in the script
|
|
to help you get started.
|
|
|
|
Using git-multimail as a Python module as done here provides more
|
|
flexibility. It 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
|
|
|
|
# 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')
|
|
|
|
# Set some Git configuration variables. Equivalent to passing var=val
|
|
# to "git -c var=val" each time git is called, or to adding the
|
|
# configuration in .git/config (must come before instantiating the
|
|
# environment) :
|
|
#git_multimail.Config.add_config_parameters('multimailhook.commitEmailFormat=html')
|
|
#git_multimail.Config.add_config_parameters(('user.name=foo', 'user.email=foo@example.com'))
|
|
|
|
# Select the type of environment:
|
|
try:
|
|
environment = git_multimail.GenericEnvironment(config=config)
|
|
#environment = git_multimail.GitoliteEnvironment(config=config)
|
|
except git_multimail.ConfigurationException:
|
|
sys.stderr.write('*** %s\n' % sys.exc_info()[1])
|
|
sys.exit(1)
|
|
|
|
|
|
# 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(
|
|
# environment=environment,
|
|
# 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)
|