diff options
author | Holger Weiss <holger@zedat.fu-berlin.de> | 2009-10-24 11:44:29 +0200 |
---|---|---|
committer | Holger Weiss <holger@zedat.fu-berlin.de> | 2009-10-24 11:44:29 +0200 |
commit | 709d238041a590b42c598ee5099d252f4352c3c0 (patch) | |
tree | 0a7eec1cc632c809f45ce08fdf055d3cc31c0bf2 /tools | |
parent | e31d34fc90c57d782bb82cd05ecb1ddda21b6d09 (diff) | |
download | monitoring-plugins-709d238041a590b42c598ee5099d252f4352c3c0.tar.gz |
git-notify: Call git-rev-list(1) via a subroutine
Add a subroutine which abstracts away executing git-rev-list(1) and
checking the result in order to avoid code duplication.
Diffstat (limited to 'tools')
-rwxr-xr-x | tools/git-notify | 35 |
1 files changed, 26 insertions, 9 deletions
diff --git a/tools/git-notify b/tools/git-notify index 848cfe0d..6d5a564c 100755 --- a/tools/git-notify +++ b/tools/git-notify @@ -102,6 +102,28 @@ sub xml_escape($) return $str; } +# execute git-rev-list(1) with the given parameters and return the output +sub git_rev_list(@) +{ + my @args = @_; + my $revlist = []; + my $pid = open REVLIST, "-|"; + + die "Cannot open pipe: $!" if not defined $pid; + if (!$pid) + { + exec "git", "rev-list", @revlist_options, @args or die "Cannot execute rev-list: $!"; + } + while (<REVLIST>) + { + chomp; + die "Invalid commit: $_" if not /^[0-9a-f]{40}$/; + push @$revlist, $_; + } + close REVLIST or die $! ? "Cannot execute rev-list: $!" : "rev-list exited with status: $?"; + return $revlist; +} + # right-justify the left column of "left: right" elements, omit undefined elements sub format_table(@) { @@ -353,19 +375,14 @@ sub send_cia_notice($$) sub send_global_notice($$$) { my ($ref, $old_sha1, $new_sha1) = @_; - my @notice = (); + my $notice = git_rev_list("--pretty", "^$old_sha1", "$new_sha1", @exclude_list); - push @revlist_options, "--pretty"; - open LIST, "-|" or exec "git", "rev-list", @revlist_options, "^$old_sha1", "$new_sha1", @exclude_list or die "cannot exec git-rev-list"; - while (<LIST>) + foreach my $rev (@$notice) { - chomp; - s/^commit /URL: $gitweb_url\/?a=commit;h=/ if $gitweb_url; - push @notice, $_; + $rev =~ s/^commit /URL: $gitweb_url\/?a=commit;h=/ if $gitweb_url; } - close LIST; - mail_notification($commitlist_address, "New commits on branch $ref", "text/plain; charset=UTF-8", @notice); + mail_notification($commitlist_address, "New commits on branch $ref", "text/plain; charset=UTF-8", @$notice); } # send all the notices |