2

我想在我的一个 git 存储库中使用git-multimail作为 post receive hook(没有使用 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复制了这个

 

#! /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.rstGIT_MULTIMAIL_CHECK_SETUP=true python git_multimail.py上的描述进行配置测试告诉我git-multimail seems properly set up

有没有办法记录脚本输出之类的东西?我能做些什么来找出什么不起作用?我的文件中甚至有错误吗?

提前致谢。

4

2 回答 2

2

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

使用 git-multimail 最简单的方法是直接使用脚本 git_multimail.py 作为 post-receive 钩子,并使用 Git 的配置文件和命令行参数进行配置。

换句话说,只是

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

你已经准备好了(因为你已经project.git/config填写好了)。有关更多详细信息,请参阅git-multimail 的 README 中的调用。

(注意:诚然,文档对初学者来说不是很清楚,我会在有时间的时候尝试改进

于 2016-10-27T06:58:49.643 回答
0

好的,伙计们,错误可能尽可能少。我在 post receive 钩子文件中只犯了一个很小的错误: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 的小教程。(我没有找到这个确切解决方案的教程。)

于 2016-09-14T15:31:23.670 回答