118 lines
		
	
	
	
		
			4.3 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			118 lines
		
	
	
	
		
			4.3 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
| 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``.
 |