簡體   English   中英

Windows上的Perl中的SVN預提交掛鈎

[英]SVN Pre-Commit Hook in Perl on Windows

我正在編寫Perl腳本以在Windows計算機上進行SVN預提交檢查,並且我使用VisualSVN Server。

這是代碼:

預commit.bat

C:\Perl\bin\perl.exe D:\Repositories\iCP\hooks\pre-commit.pl %1 %2
exit %ERRORLEVEL%

pre-commit.pl

#!/usr/bin/perl

use strict;
use warnings;

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

my $svnlook = "D:\\svnlook.exe";
my $hooks = "D:\\Repositories\\iCP\\hooks";

if(system("$svnlook log -t $txn $repos >$hooks\\res.txt"))
{
  die "Unable to finish system(): $!\n";
}

....

基本上,我希望將“ svnlook日志”結果重定向到res.txt,然后可以從該文件讀取。

但是,當我從TortoiseSVN提交時,perl腳本因“ 無法完成System():不適當的IO控制操作 ”而死亡,我不知道出了什么問題。

感謝您的幫助。

最有可能是qoute問題。 Perl使用\\作為轉義序列,因此當您包含帶有double \\的變量時,它將轉換為簡單\\。

嘗試這個:

my $svnlook = "D:\\\\svnlook.exe";
my $hooks = "D:\\\\Repositories\\\\iCP\\\\hooks";

if(system("$svnlook log -t $txn $repos >$hooks\\res.txt"))
{
  die "Unable to finish system(): $!\n";
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM