fragen stichworte

VisualSVN Server löst keinen Post-Commit-Hook aus

Ich habe ein Problem, das mich verrückt macht. Ich möchte VisualSVN Server in Mantis BT integrieren. Wenn ich also vom svn-Client aus Commit mache und etwas kommentiere wie "Behobenes Problem # 3", dann wird das Problem in Mantis als gelöst markiert.

Ich habe die Schritte in http://arklad.wordpress.com/2010/01/07/communicating-mantis-and-subversion-on-windows/

befolgt

Deshalb erstelle ich in Mantis einen Benutzer mit dem Namen 'svn' mit der Entwicklerrolle, der meinem Projekt zugewiesen ist. Ich habe mein Mantis config.inc bearbeitet und es sieht so aus:

<?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;
?>

Dann erstelle ich die Datei post-commit.bat und platziere sie im Hooks-Ordner:

@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

Alle Pfade sind in Ordnung (viele Male geprüft) und der .bat wird gut ausgeführt, wenn ich separat laufe (erstellt die Ausgabedateien).

Ich kam zu dem Schluss, dass VisualSVN kein post-commit.bat auslöst. Ich habe den Server auch oft neu gestartet. Was mache ich falsch?

antworten

Prüfen Sie nochmals, ob das Konto des VisualSVN Server-Dienstes (standardmäßig Network Service) über Zugriffsberechtigungen für alle Dateien und Ordner verfügt, mit denen das Skript nach dem Festschreiben versucht, eine Verbindung herzustellen oder zu bearbeiten.

Ich denke, dass kein Zugriff auf diese Standorte die Hauptursache ist:

  • C:\Program Files (x86)\PHP\v5.3\ und es sind Kinder,
  • C:\WebSites\mantisbt-1.2.14\scripts\ und es sind Kinder.

Es kann verschiedene Gründe dafür geben, dass ein Hook-Skript nicht funktioniert. Sie sollten den Hook behandeln und die Fehlerausgabe abrufen, um die Ursache zu verstehen. Die Fehlerausgabe hilft, die Hauptursache zu verstehen und zu beheben.

Um die Ausgabe in eine Protokolldatei zu erfassen, können Sie Folgendes tun:

  1. Benennen Sie Ihre aktuelle post-commit.bat -Datei in post-commit-run.bat,

  2. um
  3. Erstellen Sie die folgende Datei als Ihre post-commit.bat -Datei:

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

  4. Übertragen Sie das Repository und überprüfen Sie die generierte Protokolldatei.