Сценарий SVN Post-Commit Scail, приводящий к проблемам обновления рабочей копии - PullRequest
1 голос
/ 03 ноября 2011

Я написал Perl-обработчик Perl , который отправляет электронные письма через модуль 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 запускает ловушку после фиксации?

1 Ответ

0 голосов
/ 03 ноября 2011

Перехваты SVN после фиксации запускаются под специальной учетной записью в Windows, и я предполагаю, что то же самое верно для UNIX / Linux, который, похоже, вы используете.Мы столкнулись с чем-то вроде этого в Windows.

Возможно ли, что эта учетная запись не может отправлять почту через этот сервер?

Сценарий будет работать нормально при запуске напрямую (как вы), ноне когда запускается в зацепке после фиксации.Это похоже на некоторые системы cron, где ваша среда / разрешение могут сильно отличаться от того, к чему вы привыкли в интерактивной оболочке.

...