我写了Perl post-commit hook,通过Perl Net::SMTP
模块发送电子邮件。当我尝试提交时,我收到以下错误:
Sending subversion/README
Transmitting file data .svn: Commit failed (details follow):
svn: MERGE of '/mfxcm/trunk/subversion': 200 OK (http://source)
提交确实有效,但修改了我的工作副本 直到我做了“svn up”时才更新:
$ svn commit -m"Finding what's causing commit errors. I think it's the post-commit script"
Sending subversion/README
Transmitting file data .svn: Commit failed (details follow):
svn: MERGE of '/mfxcm/trunk/subversion': 200 OK (http://source)
david@DaveBook.local:~/workspace/svn-cm-trunk/subversion
$ svn up
G README
Updated to revision 94.
我玩过后提交脚本。首先,我写了一个简单的文本消息,只是打印出一条简单的文本消息,以确保工作正常。然后,我使用了我,并在不同时间退出,以查看MERGE
问题的来源。
我在脚本中找到了一个新的Net :: SMTP对象:
if ($smtpUser) {
$smtp->auth( $self->SmtpUser, $self->SmtpPassword)
or croak qq(Unable to connect to mailhost "@{[$self->SmtpHost]}")
. qq( as user "@{[$self->SmtpUser]}");
}
如果我的脚本中启用了此行,则会出现MERGE
问题。否则,我的整个脚本会按预期运行或多或少。
我也可以从命令行运行脚本,一切正常。它仅在作为事后失败的提交后挂钩触发时。我甚至以Apache身份登录并运行脚本没有任何问题。
MERGE错误是什么意思,为什么Subversion运行post-commit钩子时会得到它?
答案 0 :(得分:0)
SVN后提交挂钩在Windows中的特殊帐户下运行,我猜对于UNIX / Linux也是如此,它看起来就像你正在使用的那样。我们在Windows中碰到了这样的事情。
此帐户是否可能无法通过该服务器发送邮件?
当直接运行(就像你)时,脚本可以正常工作,但在post-commit钩子中运行时则不行。它类似于某些cron系统,您的环境/权限可能与您在交互式shell中习惯的非常不同。