如何调试/正确设置 git-multimail

How to debug / correctly setup git-multimail

我想在我的 git 存储库之一中使用 git-multimail 作为 post 接收挂钩(未使用 gitolite)。不幸的是,我无法让它工作,而且我几乎没有使用 Python.

的经验

到目前为止我做了什么:

  1. 我将以下块添加到 project.git/config 文件中:

[multimailhook]
    mailingList = email@example.com
    from = email@example.com
    envelopeSender = email@example.com
    mailer = smtp
    smtpServer = smtp.mydomain.com
    smtpUser = myUser
    smtpPass = myPassword

请注意,我不知道 mailer 变量中定义的 "smtp" 是否安装在我的机器上。

  1. 我将当前git_multimail.py文件复制到project.git/hooks
  2. 我创建了一个包含以下内容的 project.git/hook/post-receive 文件。该文件是可执行的,我从 https://github.com/git-multimail/git-multimail/blob/master/git-multimail/post-receive.example
  3. 复制了这个

#! /usr/bin/env python

import sys
import os
import git_multimail

config = git_multimail.Config('multimailhook')

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)

mailer = git_multimail.choose_mailer(config, environment)

git_multimail.run_as_post_receive_hook(environment, mailer)

会发生什么:

当我推送更改时,会创建文件 project.git/hooks/git_multimail.pyc,但不会发送电子邮件。

按照 https://github.com/git-multimail/git-multimail/blob/master/doc/troubleshooting.rst 中的描述使用 GIT_MULTIMAIL_CHECK_SETUP=true python git_multimail.py 进行配置测试告诉我 git-multimail seems properly set up

有没有办法记录类似脚本输出的内容?我该怎么做才能找出不起作用的东西?我的文件中甚至有错误吗?

提前致谢。

好的,伙计们,错误可能已经尽可能少了。我在 post 接收挂钩文件中只犯了一个非常小的错误:sys.exit(1) 命令没有缩进。

所以,我的问题的错误版本:

try:
    environment = git_multimail.GenericEnvironment(config=config)
except git_multimail.ConfigurationException:
    sys.stderr.write('*** %s\n' % sys.exc_info()[1])
sys.exit(1)

正确的是(比较最后一行):

try:
    environment = git_multimail.GenericEnvironment(config=config)
except git_multimail.ConfigurationException:
    sys.stderr.write('*** %s\n' % sys.exc_info()[1])
    sys.exit(1)

就像我说的,我几乎不了解 Python,所以我没有注意缩进。更正此问题后,电子邮件已发送,请随意使用上述步骤作为设置 git-multimail "easiest" 方式的小教程。 (我没有找到这个确切解决方案的教程。)

到目前为止,使用 post-receive.example 并不是设置 git_multimail.py 的最简单方法:正如 post-receive 的 header 所示:

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.

换句话说,就是

cp /path/to/git_multimail.py /path/to/project.git/hooks/post-receive

一切就绪(因为您已经 project.git/config filled-in)。有关详细信息,请参阅 Invocation in git-multimail's README

(注意:诚然,文档对于初学者来说不是很清楚,I'll try to improve that when I get time)