You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@subversion.apache.org by Robert Denton <ro...@headsprout.com> on 2008/03/04 23:04:20 UTC
Re: Post-commit hook tutorials?
Thanks everyone for the terrific input. Here is how my solution took form:
Instead of having the hook directly copy the file in question to the windows server, all I needed to do was determine what was committed and then pass that in a URL var to a cold fusion page. I am fortunate in that I am surrounded on all sides by CF guys who love to do everything in CF. Simplifies my job quite a bit.
First the hook script doesn't do any work itself, it just calls other scripts:
[rogerroger@svn etc]# more /svn/repos/RIPgaryg/hooks/post-commit
#!/bin/sh
REPOS="$1"
REV="$2"
/svn/etc/svnsync.sh
/svn/etc/sounds.pl $REPOS $REV
As far as the sounds script goes, the general consensus was dead on: svnlook is the ticket:
#! /usr/bin/perl
use LWP;
$repo = $ARGV[0];
$rev = $ARGV[1];
$mail_options = "-s 'A sound file has been commited' svn-commits\@10.78.222.39";
@changes = `svnlook changed $repo -r $rev`;
while (@changes) {
$commited_item = shift(@changes);
if ($commited_item =~ /(trunk.*\/sound\/.*)/) {
`echo "$1" | mail $mail_options`;
sound2fusion($1);
}
}
sub sound2fusion {
my $agent = LWP::UserAgent->new;
my $cfmfile = "svn_test1.html";
my $url_var = "?VAR=$_[0]";
my $uri = "http://10.79.26.1/$cfmfile$url_var";
my $mail_fail = "-s 'ALERT! Sound Commit Hook Failure!'";
$HTTPrequest = HTTP::Request->new(GET => $uri);
$HTTPresponse = $agent->request($HTTPrequest);
$fail_string = "The file $_[0] was committed but the call to $uri failed. The HTTP Response was: " . $HTTPresponse->status_line;
if (!($HTTPresponse->is_success)) {
`echo "$fail_string" | mail $mail_fail svn-commits\@10.78.222.39`;
}
#print " ***> HTTPResponse: " . $HTTPresponse->content . "\n";
#print " ***> HTTPResponse: " . $HTTPresponse->status_line . "\n";
#print " ***> HTTPResponse: " . $HTTPresponse->code . "\n";
#print " ***> HTTPResponse: " . $HTTPresponse->message . "\n";
} # end sub sound2fusion
Something less than polished at this point but it is doing exactly what I need it to do. I thought I'd offer it up for anyone who needs a similar solution in the future. Thanks again!
Robert