如何调试/正确设置 git-multimail
How to debug / correctly setup git-multimail
我想在我的 git 存储库之一中使用 git-multimail 作为 post 接收挂钩(未使用 gitolite)。不幸的是,我无法让它工作,而且我几乎没有使用 Python.
的经验
到目前为止我做了什么:
- 我将以下块添加到
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" 是否安装在我的机器上。
- 我将当前
git_multimail.py
文件复制到project.git/hooks
。
- 我创建了一个包含以下内容的
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.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)
我想在我的 git 存储库之一中使用 git-multimail 作为 post 接收挂钩(未使用 gitolite)。不幸的是,我无法让它工作,而且我几乎没有使用 Python.
的经验到目前为止我做了什么:
- 我将以下块添加到
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" 是否安装在我的机器上。
- 我将当前
git_multimail.py
文件复制到project.git/hooks
。 - 我创建了一个包含以下内容的
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.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)