git-multimail
supports gitolite 3 natively.
The explanations below show an easy way to set up git-multimail
,
but leave git-multimail
installed and unconfigured for a while. If
you run gitolite on a production server, it is advised that you
execute the step "Set up the hook" last to avoid confusing your users
in the meantime.
Log in as your gitolite user.
Create a file .gitolite/hooks/common/post-receive
on your gitolite
account containing (adapt the path, obviously):
#!/bin/sh exec /path/to/git-multimail/git-multimail/git_multimail.py "$@"
Make sure it's executable (chmod +x
). Record the hook in
gitolite:
gitolite setup
First, you have to allow the admin to set Git configuration variables.
As gitolite user, edit the line containing GIT_CONFIG_KEYS
in file
.gitolite.rc
, to make it look like:
GIT_CONFIG_KEYS => 'multimailhook\..*',
You can now log out and return to your normal user.
In the gitolite-admin
clone, edit the file conf/gitolite.conf
and add:
repo @all # Not strictly needed as git_multimail.py will chose gitolite if # $GL_USER is set. config multimailhook.environment = gitolite config multimailhook.mailingList = # Where emails should be sent config multimailhook.from = # From address to use
Note that by default, gitolite forbids <
and >
in variable
values (for security/paranoia reasons, see
compensating for UNSAFE_PATT
in gitolite's documentation for explanations and a way to disable
this). As a consequence, you will not be able to use First Last
<[email protected]>
as recipient email, but specifying
[email protected]
alone works.
Obviously, you can customize all parameters on a per-repository basis by
adding these config multimailhook.*
lines in the section
corresponding to a repository or set of repositories.
To activate git-multimail
on a per-repository basis, do not set
multimailhook.mailingList
in the @all
section and set it only
for repositories for which you want git-multimail
.
Alternatively, you can set up the From:
field on a per-user basis
by adding a BEGIN USER EMAILS
/END USER EMAILS
section (see
../README
).
With gitolite, the syntax config multimailhook.commitList = ""
unsets the variable instead of setting it to an empty string (see
here).
As a result, there is no way to set a variable to the empty string.
In all most places where an empty value is required, git-multimail
now allows to specify special "none"
value (case-sensitive) to
mean the same.
Alternatively, one can use " "
(a single space) instead of ""
.
In most cases (in particular multimailhook.*List
variables), this
will be equivalent to an empty string.
If you have a use-case where "none"
is not an acceptable value and
you need " "
or ""
instead, please report it as a bug to
git-multimail.
gitolite has a mechanism to prevent unsafe configuration variable
values, which prevent characters like |
commonly used in regular
expressions. If you do not need the safety feature of gitolite and
need to use regular expressions in your configuration (e.g. for
multimailhook.refFilter*
variables), set
UNSAFE_PATT to a
less restrictive value.
Warning: this will disable git-multimail
during the debug, and
could confuse your users. Don't run on a production server.
To debug configuration issues with git-multimail
, you can add the
--stdout
option when calling git_multimail.py
like this:
#!/bin/sh exec /path/to/git-multimail/git-multimail/git_multimail.py --stdout "$@"
and try pushing from a test repository. You should see the source of
the email that would have been sent in the output of git push
.