merge(third_party/git): Merge squashed git subtree at v2.23.0
Merge commit '1b593e1ea4
' as 'third_party/git'
This commit is contained in:
commit
7ef0d62730
3629 changed files with 1139935 additions and 0 deletions
118
third_party/git/contrib/hooks/multimail/doc/gitolite.rst
vendored
Normal file
118
third_party/git/contrib/hooks/multimail/doc/gitolite.rst
vendored
Normal file
|
@ -0,0 +1,118 @@
|
|||
Setting up git-multimail on gitolite
|
||||
====================================
|
||||
|
||||
``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.
|
||||
|
||||
Set up the hook
|
||||
---------------
|
||||
|
||||
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
|
||||
|
||||
Configuration
|
||||
-------------
|
||||
|
||||
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
|
||||
<http://gitolite.com/gitolite/git-config/index.html#compensating-for-unsafe95patt>`__
|
||||
in gitolite's documentation for explanations and a way to disable
|
||||
this). As a consequence, you will not be able to use ``First Last
|
||||
<First.Last@example.com>`` as recipient email, but specifying
|
||||
``First.Last@example.com`` 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``).
|
||||
|
||||
Specificities of Gitolite for Configuration
|
||||
-------------------------------------------
|
||||
|
||||
Empty configuration variables
|
||||
.............................
|
||||
|
||||
With gitolite, the syntax ``config multimailhook.commitList = ""``
|
||||
unsets the variable instead of setting it to an empty string (see
|
||||
`here
|
||||
<http://gitolite.com/gitolite/git-config.html#an-important-warning-about-deleting-a-config-line>`__).
|
||||
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.
|
||||
|
||||
Allowing Regular Expressions in Configuration
|
||||
.............................................
|
||||
|
||||
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
|
||||
<http://gitolite.com/gitolite/git-config.html#unsafe-patt>`__ to a
|
||||
less restrictive value.
|
||||
|
||||
Troubleshooting
|
||||
---------------
|
||||
|
||||
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``.
|
Loading…
Add table
Add a link
Reference in a new issue