【发布时间】:2015-05-29 09:38:45
【问题描述】:
如标题所示,我是从我用 perl 编写的具有命令的提交后挂钩脚本调用的
$msg = `$svnlook changed -t "$rev" "$repos"`;
应该执行,然后我应该将$msg 发送给我的服务。但是当我跑步时
if ( length($msg) == 0 )
{
print STDERR "msg length is 0";
exit(1);
}
我在控制台上收到此错误消息,那么为什么没有执行此 svnlook 命令?
我正在使用 Windows 7 和 VisualSVN 服务器。
另一方面,我有其他理论可以在钩子本身中运行此命令,例如
@echo off
set repos=%1
set rev=%2
set changes=svnlook changed %repos% -r %rev%
C:\Perl64\bin\perl C:\repositories\myproject\hooks\myhook.pl %1 %2 changes
但我不知道如何传递这个changes 参数,所以如果这可以工作,它也可以回答。
如何将参数从批处理传递到 perl 脚本?
【问题讨论】:
-
我很困惑,如果您已经在 Perl 脚本中执行 svnlook 命令,为什么还需要传递 changes?似乎您需要传递给脚本的只是修订号和存储库路径。
-
您还应该注意,svnlook 有两种形式,一种接受事务号,另一种接受修订号。出于某种原因,您似乎在这里同时使用两者。
-
问题帖子中间有一行,第一部分是我试图在 perl 脚本中执行命令的地方,第二部分没有执行我试图批量执行命令然后将结果传递给我的脚本,但都不起作用
-
我在哪里使用不同的 svnlooks?
-
那么您的第一个示例可能只是一个错误,您正在使用接受事务号的
-t标志传递修订号。命令应该是`$svnlook changed -r "$rev" "$repos"`;你也从来没有解释过你的意思是什么不起作用?你得到你不期望的输出吗?你没有输出吗?您收到错误消息吗?
标签: perl batch-file svn visualsvn-server post-commit-hook