У меня проблема, которая сводит меня с ума. Я хочу интегрировать 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\
и это дети.Причины, по которым скрипт перехвата не работает, могут быть разными. Вы должны устранить перехватчик и получить сообщение об ошибке, чтобы понять причину. Вывод ошибок помогает понять первопричину и исправить ее.
Чтобы записать вывод в файл журнала, вы можете сделать следующее:
Переименуйте текущий post-commit.bat
файл в post-commit-run.bat
,
Создайте следующий файл как ваш post-commit.bat
файл:
call "%~dp0post-commit-run.bat" %* > %1/hooks/post-commit.log 2>&1
Зарегистрируйтесь в репозитории и проверьте созданный файл журнала.