2015-03-13 3 views
1

J'ai installé et installé VisualSVN Server v3.2.2 sur ma machine locale (Windows 7 Professional - 64bit) et j'ai écrit un hook post-commit en Perl fondamentalement devrait envoyer une requête HTTP POST à ​​un serveur chaque fois que quelque chose a été commité. J'ai testé mon script Perl par cmd et je reçois une réponse valide, mais quand je commets quelque chose en utilisant TortoiseSVN J'obtiens des erreursLe serveur VisualSVN ne peut pas reconnaître Perl dans le hook post-commit

Error post-commit hook failed (exit code 1) with output: 
'perl' is not recognized as an internal or external command, 
operable program or batch file. 

Voici mon script perl:

$svnlook = '"C:\Program Files\VisualSVN Server\bin\svnlook.exe"'; 

$repos = $ARGV[0]; 
$txn = $ARGV[1]; 

print STDOUT "message sent " . $repos . " " . $txn; 

use LWP::UserAgent; 
my $ua = LWP::UserAgent->new; 
my $server_endpoint = "http://jsonplaceholder.typicode.com/posts"; 

# set custom HTTP request header fields 
my $req = HTTP::Request->new(POST => $server_endpoint); 
$req->header('content-type' => 'application/json'); 

# add POST data to HTTP request body 
my $post_data = '{ "repos":"' . $repos . '", "txn":"' . $txn . '"}'; 
$req->content($post_data); 

my $resp = $ua->request($req); 
if ($resp->is_success) { 
    my $message = $resp->decoded_content; 
    print "Received reply: $message\n"; 
} 
else { 
    print "HTTP POST error code: ", $resp->code, "\n"; 
    print "HTTP POST error message: ", $resp->message, "\n"; 
} 


exit(0); 

et mon poste fichier batch -commit:

perl myhook.pl %1 %2 

J'ai essayé de redémarrer le serveur svn et ma machine, mais pas de chance. Aussi quand je tape dans path cmd Je ne vois perl dans mon chemin C:\Perl64\bin

Peut-être que mon approche de ce crochet ne va pas ou quelque chose ... quelqu'un peut aider avec celui-ci?

Merci

Répondre

4

VotrePATH est pas la même PATH que le compte utilisateur sous lequel fonctionne VisualSVN serveur a.

Spécifiez toujours le chemin complet et absolu de tous les éléments de vos scripts de hook, quel que soit le serveur SVN et le système d'exploitation que vous utilisez.

C:\Perl64\bin\perl myhook.pl %1 %2 
+0

Merci pour une réponse rapide, mais maintenant je reçois une autre erreur étrange: Erreur: crochet post-commit a échoué (code de sortie 2) avec sortie: Impossible de script open perl "myhook.pl": Aucun fichier ou répertoire lorsque myhook.pl se trouve dans le même dossier que post-commit.cmd –

+0

Comme je l'ai dit, vous devez spécifier le ** chemin d'accès complet à tous les éléments **. Je ne connais pas le chemin de 'myhook.pl', donc je ne pouvais pas le mettre dans mon post. – alroc

+0

oh oui, tous les articles ... désolé de ne pas lire attentivement. –