VisualSVN 服务器无法识别 post-commit 挂钩中的 Perl
VisualSVN server can't recognize Perl in post-commit hook
我已经在我的本地机器上安装并设置了 VisualSVN Server v3.2.2 (Windows 7 Professional - 64bit) 我写了 post Perl 中的 -commit 挂钩,它基本上应该在每次提交某些内容时向某个服务器发送一个 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);
和我的 post-提交批处理文件:
perl myhook.pl %1 %2
我尝试重新启动 svn 服务器和我的机器,但没有成功。
另外,当我在 cmd 中键入 path
时,我确实在我的路径中看到了 perl C:\Perl64\bin
也许我对这个钩子的处理方式不对或有什么问题...有人可以帮忙解决这个问题吗?
谢谢
您的 PATH
与运行 VisualSVN Server 的用户帐户不同PATH
。
始终在挂钩脚本中指定所有项目的完整绝对路径,无论您使用的是什么 SVN 服务器和 OS。
C:\Perl64\bin\perl myhook.pl %1 %2
我已经在我的本地机器上安装并设置了 VisualSVN Server v3.2.2 (Windows 7 Professional - 64bit) 我写了 post Perl 中的 -commit 挂钩,它基本上应该在每次提交某些内容时向某个服务器发送一个 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);
和我的 post-提交批处理文件:
perl myhook.pl %1 %2
我尝试重新启动 svn 服务器和我的机器,但没有成功。
另外,当我在 cmd 中键入 path
时,我确实在我的路径中看到了 perl C:\Perl64\bin
也许我对这个钩子的处理方式不对或有什么问题...有人可以帮忙解决这个问题吗?
谢谢
您的 PATH
与运行 VisualSVN Server 的用户帐户不同PATH
。
始终在挂钩脚本中指定所有项目的完整绝对路径,无论您使用的是什么 SVN 服务器和 OS。
C:\Perl64\bin\perl myhook.pl %1 %2