提问者:小点点

VisualSVN服务器无法识别提交后挂钩中的Perl


我已经在本地机器(Windows 7 Professional - 64位)上安装并设置了VisualSVN Server v3.2.2,并且我在Perl中编写了提交后的钩子,基本上每次提交时都应该向某个服务器发送一个HTTP POST请求。我已经通过cmd测试了我的Perl脚本,并且得到了有效的响应,但是当我使用TortoiseSVN客户端提交某些内容时,我收到错误

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.

以下是我的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);

和我的提交后批处理文件:

perl myhook.pl %1 %2

我试图重新启动svn服务器和我的机器,但没有运气。另外,当我在cmd中键入路径时,我确实在我的路径C:\Perl64\bin中看到perl

也许我的方法不正确...有人能帮忙吗?

谢谢


共1个答案

匿名用户

您的 PATH 与运行 VisualSVN Server 的用户帐户的路径不同。

无论您使用的是什么SVN服务器和操作系统,都要始终指定钩子脚本中所有项目的完整、绝对路径。

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