diff options
author | Holger Weiss <holger@zedat.fu-berlin.de> | 2009-11-07 09:40:22 (GMT) |
---|---|---|
committer | Holger Weiss <holger@zedat.fu-berlin.de> | 2009-11-07 09:40:22 (GMT) |
commit | c3e2186b15901579cec17aca22646b9dddf2363f (patch) | |
tree | fe564afc032a7870fafb885e34f9682154039c5d | |
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.
-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 b3223a8..faa1785 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 | { |