Reputation: 1010
As in title I am calling from my post-commit hook script written in perl which has command
$msg = `$svnlook changed -t "$rev" "$repos"`;
which should execute and than I should send $msg
to my service. But when I run
if ( length($msg) == 0 )
{
print STDERR "msg length is 0";
exit(1);
}
I get this error message on console, so why is this svnlook
command not being executed?
I am using windows 7 and VisualSVN server.
On other note, I had other theory to run this command in hook itself like
@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
but I don't know how to pass this changes
parameter, so if this could work, it could answer as well.
How to pass parameter from batch to perl script?
Upvotes: 0
Views: 985
Reputation: 61513
running svnlook changed help display the list of valid options to svnlook changed
and their expected format:
$ svnlook help changed
changed: usage: svnlook changed REPOS_PATH
Print the paths that were changed.
Valid options:
-r [--revision] ARG : specify revision number ARG
-t [--transaction] ARG : specify transaction name ARG
--copy-info : show details for copies
Normally you would specify either a transaction number with -t
or a revision number with -r
. You appear to be passing a revision number with -t
which will lead to unexpected results: either no results or results that are unrelated to the revision you wish to example.
I believe the correct usage in your case would be:
my $msg = `$svnlook changed -r "$rev" "$repos"`;
The above command is going to give you one long string that is delimited by newlines. You can get this is a more manageable array format by using the same command in list context:
my @changes = `$svnlook changed -r "$rev" "$repos"`;
additionally these lines will all have trailing newlines, you can eliminate them using the chomp()
built-in:
my @changes;
chomp(@changes = `$svnlook changed -r "$rev" "$repos"`);
Alternatively, you could look at SVN::SVNLook
which a Perl wrapper around the svnlook
command.
Upvotes: 1