diff options
| author | Holger Weiss <holger@zedat.fu-berlin.de> | 2009-11-07 10:40:22 +0100 | 
|---|---|---|
| committer | Holger Weiss <holger@zedat.fu-berlin.de> | 2009-11-07 10:40:22 +0100 | 
| commit | c3e2186b15901579cec17aca22646b9dddf2363f (patch) | |
| tree | fe564afc032a7870fafb885e34f9682154039c5d /tools | |
| parent | 71351c5a4db3a143ca23d7614c23e80b31bdd15c (diff) | |
| download | monitoring-plugins-c3e2186b15901579cec17aca22646b9dddf2363f.tar.gz | |
git-notify: Support SourceForge repositories
The Gitweb URLs for repositories hosted by SourceForge are slightly
different than other Gitweb URLs.  The correct URL cannot be specified
via "-u" if we append "/$repos_name.git/?" to that URL as we usually do.
If the new "-S" flag is specified or "notify.sourceforge" is set, we'll
append "/$repos_name;" instead, which makes the "-u" option usable for
SourceForge repositories.
Diffstat (limited to 'tools')
| -rwxr-xr-x | tools/git-notify | 20 | 
1 files changed, 14 insertions, 6 deletions
| diff --git a/tools/git-notify b/tools/git-notify index b3223a87..faa17850 100755 --- a/tools/git-notify +++ b/tools/git-notify | |||
| @@ -22,6 +22,7 @@ | |||
| 22 | # -m addr Send mail notifications to specified address | 22 | # -m addr Send mail notifications to specified address | 
| 23 | # -n max Set max number of individual mails to send | 23 | # -n max Set max number of individual mails to send | 
| 24 | # -r name Set the git repository name | 24 | # -r name Set the git repository name | 
| 25 | # -S Enable compatibility with SourceForge's gitweb URLs | ||
| 25 | # -s bytes Set the maximum diff size in bytes (-1 for no limit) | 26 | # -s bytes Set the maximum diff size in bytes (-1 for no limit) | 
| 26 | # -T Prefix the mail subject with a [repository name] tag | 27 | # -T Prefix the mail subject with a [repository name] tag | 
| 27 | # -t file Prevent duplicate notifications by saving state to this file | 28 | # -t file Prevent duplicate notifications by saving state to this file | 
| @@ -72,6 +73,9 @@ my $gitweb_url = git_config( "notify.baseurl" ); | |||
| 72 | # abbreviate the SHA1 name within gitweb URLs (can be set with the -z option) | 73 | # abbreviate the SHA1 name within gitweb URLs (can be set with the -z option) | 
| 73 | my $abbreviate_url = git_config( "notify.shorturls" ); | 74 | my $abbreviate_url = git_config( "notify.shorturls" ); | 
| 74 | 75 | ||
| 76 | # enable compatibility with SourceForge's gitweb (can be set with the -S option) | ||
| 77 | my $sourceforge = git_config( "notify.sourceforge" ); | ||
| 78 | |||
| 75 | # default repository name (can be changed with the -r option) | 79 | # default repository name (can be changed with the -r option) | 
| 76 | my $repos_name = git_config( "notify.repository" ) || get_repos_name(); | 80 | my $repos_name = git_config( "notify.repository" ) || get_repos_name(); | 
| 77 | 81 | ||
| @@ -112,6 +116,7 @@ sub usage() | |||
| 112 | print " -m addr Send mail notifications to specified address\n"; | 116 | print " -m addr Send mail notifications to specified address\n"; | 
| 113 | print " -n max Set max number of individual mails to send\n"; | 117 | print " -n max Set max number of individual mails to send\n"; | 
| 114 | print " -r name Set the git repository name\n"; | 118 | print " -r name Set the git repository name\n"; | 
| 119 | print " -S Enable compatibility with SourceForge's gitweb URLs\n"; | ||
| 115 | print " -s bytes Set the maximum diff size in bytes (-1 for no limit)\n"; | 120 | print " -s bytes Set the maximum diff size in bytes (-1 for no limit)\n"; | 
| 116 | print " -T Prefix the mail subject with a [repository name] tag\n"; | 121 | print " -T Prefix the mail subject with a [repository name] tag\n"; | 
| 117 | print " -t file Prevent duplicate notifications by saving state to this file\n"; | 122 | print " -t file Prevent duplicate notifications by saving state to this file\n"; | 
| @@ -300,6 +305,7 @@ sub parse_options() | |||
| 300 | elsif ($arg eq '-m') { $commitlist_address = shift @ARGV; } | 305 | elsif ($arg eq '-m') { $commitlist_address = shift @ARGV; } | 
| 301 | elsif ($arg eq '-n') { $max_individual_notices = shift @ARGV; } | 306 | elsif ($arg eq '-n') { $max_individual_notices = shift @ARGV; } | 
| 302 | elsif ($arg eq '-r') { $repos_name = shift @ARGV; } | 307 | elsif ($arg eq '-r') { $repos_name = shift @ARGV; } | 
| 308 | elsif ($arg eq '-S') { $sourceforge = 1; } | ||
| 303 | elsif ($arg eq '-s') { $max_diff_size = shift @ARGV; } | 309 | elsif ($arg eq '-s') { $max_diff_size = shift @ARGV; } | 
| 304 | elsif ($arg eq '-T') { $emit_repo = 1; } | 310 | elsif ($arg eq '-T') { $emit_repo = 1; } | 
| 305 | elsif ($arg eq '-t') { $state_file = shift @ARGV; } | 311 | elsif ($arg eq '-t') { $state_file = shift @ARGV; } | 
| @@ -435,7 +441,7 @@ sub send_ref_notice($$@) | |||
| 435 | ($reftype eq "tag" ? "Tag:" : "Branch:") . $refname, | 441 | ($reftype eq "tag" ? "Tag:" : "Branch:") . $refname, | 
| 436 | @notice, | 442 | @notice, | 
| 437 | ($action ne "removed" and $gitweb_url) | 443 | ($action ne "removed" and $gitweb_url) | 
| 438 | ? "URL: $gitweb_url/?a=shortlog;h=$ref" : undef), | 444 | ? "URL: ${gitweb_url}a=shortlog;h=$ref" : undef), | 
| 439 | "", | 445 | "", | 
| 440 | "The $refname $reftype has been $action."); | 446 | "The $refname $reftype has been $action."); | 
| 441 | 447 | ||
| @@ -461,7 +467,7 @@ sub send_commit_notice($$) | |||
| 461 | close REVPARSE or die $! ? "Cannot execute rev-parse: $!" : "rev-parse exited with status: $?"; | 467 | close REVPARSE or die $! ? "Cannot execute rev-parse: $!" : "rev-parse exited with status: $?"; | 
| 462 | } | 468 | } | 
| 463 | $obj_string = $obj if not defined $obj_string; | 469 | $obj_string = $obj if not defined $obj_string; | 
| 464 | $url = "$gitweb_url/?a=$info{type};h=$obj_string"; | 470 | $url = "${gitweb_url}a=$info{type};h=$obj_string"; | 
| 465 | } | 471 | } | 
| 466 | 472 | ||
| 467 | if ($info{"type"} eq "tag") | 473 | if ($info{"type"} eq "tag") | 
| @@ -509,7 +515,7 @@ sub send_commit_notice($$) | |||
| 509 | } | 515 | } | 
| 510 | else | 516 | else | 
| 511 | { | 517 | { | 
| 512 | push @notice, "Diff: $gitweb_url/?a=commitdiff;h=$obj_string" if $gitweb_url; | 518 | push @notice, "Diff: ${gitweb_url}a=commitdiff;h=$obj_string" if $gitweb_url; | 
| 513 | } | 519 | } | 
| 514 | $subject = $info{"author_name"} . ": " unless $omit_author; | 520 | $subject = $info{"author_name"} . ": " unless $omit_author; | 
| 515 | } | 521 | } | 
| @@ -566,7 +572,7 @@ sub send_cia_notice($$) | |||
| 566 | 572 | ||
| 567 | push @cia_text, | 573 | push @cia_text, | 
| 568 | " </files>", | 574 | " </files>", | 
| 569 | $gitweb_url ? " <url>" . xml_escape("$gitweb_url/?a=commit;h=$commit") . "</url>" : "", | 575 | $gitweb_url ? " <url>" . xml_escape("${gitweb_url}a=commit;h=$commit") . "</url>" : "", | 
| 570 | " </commit>", | 576 | " </commit>", | 
| 571 | " </body>", | 577 | " </body>", | 
| 572 | " <timestamp>" . $info{"author_date"} . "</timestamp>", | 578 | " <timestamp>" . $info{"author_date"} . "</timestamp>", | 
| @@ -583,7 +589,7 @@ sub send_global_notice($$$) | |||
| 583 | 589 | ||
| 584 | foreach my $rev (@$notice) | 590 | foreach my $rev (@$notice) | 
| 585 | { | 591 | { | 
| 586 | $rev =~ s/^commit /URL: $gitweb_url\/?a=commit;h=/ if $gitweb_url; | 592 | $rev =~ s/^commit /URL: ${gitweb_url}a=commit;h=/ if $gitweb_url; | 
| 587 | } | 593 | } | 
| 588 | 594 | ||
| 589 | mail_notification($commitlist_address, "New commits on branch $ref", "text/plain; charset=UTF-8", @$notice); | 595 | mail_notification($commitlist_address, "New commits on branch $ref", "text/plain; charset=UTF-8", @$notice); | 
| @@ -662,7 +668,9 @@ parse_options(); | |||
| 662 | umask( $mode_mask ); | 668 | umask( $mode_mask ); | 
| 663 | 669 | ||
| 664 | # append repository path to URL | 670 | # append repository path to URL | 
| 665 | $gitweb_url .= "/$repos_name.git" if $gitweb_url; | 671 | if ($gitweb_url) { | 
| 672 | $gitweb_url .= $sourceforge ? "/$repos_name;" : "/$repos_name.git/?"; | ||
| 673 | } | ||
| 666 | 674 | ||
| 667 | if (@ARGV) | 675 | if (@ARGV) | 
| 668 | { | 676 | { | 
