1

我编写了一个Perl 提交后挂钩Net::SMTP,它通过 Perl模块发送电子邮件。尝试提交时出现以下错误:

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 钩子时我会得到它?

4

1 回答 1

0

SVN 提交后挂钩在 Windows 中的一个特殊帐户下运行,我猜 UNIX/Linux 也是如此,看起来您正在使用它。我们在 Windows 中遇到了类似的情况。

此帐户是否可能无法通过该服务器发送邮件?

该脚本在直接运行时(如您)可以正常工作,但在提交后挂钩中运行时则不行。它类似于某些 cron 系统,在这些系统中,您的环境/权限可能与您在交互式 shell 中习惯的完全不同。

于 2011-11-03T17:58:43.120 回答