mirror of
https://github.com/git/git
synced 2024-10-30 14:03:28 +00:00
b513f71f60
This commit contains the squashed changes from the upstream git-multimail repository since the last code drop. Highlights: * Fix encoding of non-ASCII email addresses in email headers. * Fix backwards-compatibility bugs for older Python 2.x versions. * Fix a backwards-compatibility bug for Git 1.7.1. * Add an option commitDiffOpts to customize logs for revisions. * Pass "-oi" to sendmail by default to prevent premature termination on a line containing only ".". * Stagger email "Date:" values in an attempt to help mail clients thread the emails in the right order. * If a mailing list setting is missing, just skip sending the corresponding email (with a warning) instead of failing. * Add a X-Git-Host header that can be used for email filtering. * Allow the sender's fully-qualified domain name to be configured. * Minor documentation improvements. * Add a CHANGES file. Contributions-by: Raphaël Hertzog <hertzog@debian.org> Contributions-by: Eric Berberich <eric.berberich@gmail.com> Contributions-by: Michiel Holtkamp <git@elfstone.nl> Contributions-by: Malte Swart <mswart@devtation.de> Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
90 lines
2.9 KiB
Python
Executable file
90 lines
2.9 KiB
Python
Executable file
#! /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)
|