Назад | Перейти на главную страницу

VisualSVN Server не запускает перехватчик после фиксации

У меня проблема, которая сводит меня с ума. Я хочу интегрировать VisualSVN Server с Mantis BT, поэтому, когда я совершаю коммит из клиента svn и комментирую что-то вроде «исправленная проблема № 3», проблема в Mantis помечается как решенная.

Я выполнил шаги в http://arklad.wordpress.com/2010/01/07/communicating-mantis-and-subversion-on-windows/

Поэтому я создаю пользователя в Mantis с именем svn с ролью разработчика и назначаю его своему проекту. Я редактировал своего богомола config.inc и это выглядит так:

<?php
$g_hostname = 'databaseserver';
$g_db_type = 'mssqlnative';
$g_database_name = 'mantisbt';
$g_db_username = 'mantis';
$g_db_password = 'mypass';

$g_allow_file_upload = ON;
$g_file_upload_method = DISK;

# User account that connects with Subversion
$g_source_control_account = 'svn';

    # Regular expression to be matched in the comments
    # Example: issue #1
    $g_source_control_regexp = '/\b(?:bug|issue|error)\s*[#]{0,1}(\d+)\b/i';

    # Regular expression to be matched to fix an issue
    # Example: fixed issue #1
    $g_source_control_fixed_regexp = '/\b(?:fixed|fixes|resolved)\s+(?:bug|issue|error)?\s*[#](\d+)\b/i';
    # Status after solving the issue
    $g_source_control_set_status_to = RESOLVED;
    # Resolution after solving the issue
    $g_source_control_set_resolution_to = FIXED;
?>

Затем я создаю post-commit.bat файл и поместите его в папку хуков:

@ECHO on
SET REPOS=%1
SET REV=%2

SET PHP="C:\Program Files (x86)\PHP\v5.3\php.exe"
SET CHECKIN="C:\WebSites\mantisbt-1.2.14\scripts\checkin.php"
SET SVNLOOK="C:\Program Files (x86)\VisualSVN Server\bin\svnlook.exe"

SET LOGFILE=C:\log.txt
SET AUTHORFILE=C:\author.txt
SET OUTPUTFILE=C:\output.txt

%SVNLOOK% log -r %REV% %REPOS% > %LOGFILE%
%SVNLOOK% author -r %REV% %REPOS% > %AUTHORFILE%

TYPE %LOGFILE% > %OUTPUTFILE%

%PHP% %CHECKIN% < %OUTPUTFILE% >> %LOGFILE%
ECHO "Post-commit for revision %REV% finished" >> %LOGFILE%
@ECHO off

Все пути в порядке (проверено много раз) и .bat хорошо работает, когда я запускаю отдельно (он создает выходные файлы).

Я пришел к выводу, что VisualSVN не запускает post-commit.bat. Я также много раз перезапускал сервер. Что я делаю не так?

Дважды проверьте, есть ли учетная запись службы VisualSVN Server (Network Service аккаунт по умолчанию) имеет права доступа ко всем файлам и папкам, к которым скрипт после фиксации пытается прикоснуться или работать с ними.

Я думаю, что основной причиной является отсутствие доступа к этим местам:

  • C:\Program Files (x86)\PHP\v5.3\ и это дети,
  • C:\WebSites\mantisbt-1.2.14\scripts\ и это дети.

Причины, по которым скрипт перехвата не работает, могут быть разными. Вы должны устранить перехватчик и получить сообщение об ошибке, чтобы понять причину. Вывод ошибок помогает понять первопричину и исправить ее.

Чтобы записать вывод в файл журнала, вы можете сделать следующее:

  1. Переименуйте текущий post-commit.bat файл в post-commit-run.bat,

  2. Создайте следующий файл как ваш post-commit.bat файл:

    call "%~dp0post-commit-run.bat" %* > %1/hooks/post-commit.log 2>&1

  3. Зарегистрируйтесь в репозитории и проверьте созданный файл журнала.