我有一个让我抓狂的问题。我想将 VisualSVN Server 与 Mantis BT 集成,这样当我从 svn 客户端提交时,我会评论“已修复问题 #3”,然后 Mantis 中的问题就会被标记为已解决。
我按照步骤进行操作http://arklad.wordpress.com/2010/01/07/communicating-mantis-and-subversion-on-windows/
因此,我在 Mantis 中创建了一个名为“svn”的用户,并赋予其开发人员角色,并将其分配给我的项目。我编辑了我的 mantis 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
文件并将其放在 hooks 文件夹中:
@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
。我也多次重启了服务器。我做错了什么?
答案1
仔细检查 VisualSVN 服务器服务帐户(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
提交到存储库并检查生成的日志文件。