【问题标题】:VisualSVN server can't recognize Perl in post-commit hookVisualSVN 服务器无法识别提交后挂钩中的 Perl
【发布时间】:2015-05-15 20:12:54
【问题描述】:

我已经在我的本地机器(Windows 7 Professional - 64bit)上安装并设置了 VisualSVN Server v3.2.2,并且我在 Perl 中编写了 post-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);

还有我的提交后批处理文件:

perl myhook.pl %1 %2

我尝试重新启动 svn 服务器和我的机器,但没有成功。 此外,当我在 cmd 中键入 path 时,我确实在我的路径中看到了 perl C:\Perl64\bin

也许我对这个钩子的方法不正确或什么...任何人都可以帮助解决这个问题?

谢谢

【问题讨论】:

    标签: perl svn visualsvn-server post-commit-hook


    【解决方案1】:

    您的 PATH 与运行 VisualSVN 服务器的用户帐户所具有的 PATH 不同。

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

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

    【讨论】:

    • 感谢您的快速响应,但现在我收到其他奇怪的错误:错误:提交后挂钩失败(退出代码 2),输出:无法打开 perl 脚本“myhook.pl”:否当 myhook.pl 与 post-commit.cmd 位于同一文件夹中时的此类文件或目录
    • 就像我说的,您需要指定所有项目的完整路径。我不知道myhook.pl 的路径,所以我不能把它放在我的帖子里。
    猜你喜欢
    • 2013-09-10
    • 1970-01-01
    • 2013-03-17
    • 1970-01-01
    • 2011-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多