diff options
Diffstat (limited to 'tools')
-rwxr-xr-x | tools/git-notify | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/tools/git-notify b/tools/git-notify index 0031fcde..289a5f64 100755 --- a/tools/git-notify +++ b/tools/git-notify | |||
@@ -27,6 +27,7 @@ | |||
27 | # -i branch If at least one -i is given, report only for specified branches | 27 | # -i branch If at least one -i is given, report only for specified branches |
28 | # -x branch Exclude changes to the specified branch from reports | 28 | # -x branch Exclude changes to the specified branch from reports |
29 | # -X Exclude merge commits | 29 | # -X Exclude merge commits |
30 | # -z Try to abbreviate the SHA1 name within gitweb URLs (unsafe) | ||
30 | # | 31 | # |
31 | 32 | ||
32 | use strict; | 33 | use strict; |
@@ -56,6 +57,9 @@ my $show_committer = git_config( "notify.showcommitter" ); | |||
56 | # base URL of the gitweb repository browser (can be set with the -u option) | 57 | # base URL of the gitweb repository browser (can be set with the -u option) |
57 | my $gitweb_url = git_config( "notify.baseurl" ); | 58 | my $gitweb_url = git_config( "notify.baseurl" ); |
58 | 59 | ||
60 | # abbreviate the SHA1 name within gitweb URLs (can be set with the -z option) | ||
61 | my $abbreviate_url = git_config( "notify.shorturls" ); | ||
62 | |||
59 | # default repository name (can be changed with the -r option) | 63 | # default repository name (can be changed with the -r option) |
60 | my $repos_name = git_config( "notify.repository" ) || get_repos_name(); | 64 | my $repos_name = git_config( "notify.repository" ) || get_repos_name(); |
61 | 65 | ||
@@ -101,6 +105,7 @@ sub usage() | |||
101 | print " -i branch If at least one -i is given, report only for specified branches\n"; | 105 | print " -i branch If at least one -i is given, report only for specified branches\n"; |
102 | print " -x branch Exclude changes to the specified branch from reports\n"; | 106 | print " -x branch Exclude changes to the specified branch from reports\n"; |
103 | print " -X Exclude merge commits\n"; | 107 | print " -X Exclude merge commits\n"; |
108 | print " -z Try to abbreviate the SHA1 name within gitweb URLs (unsafe)\n"; | ||
104 | exit 1; | 109 | exit 1; |
105 | } | 110 | } |
106 | 111 | ||
@@ -282,6 +287,7 @@ sub parse_options() | |||
282 | elsif ($arg eq '-i') { push @include_list, shift @ARGV; } | 287 | elsif ($arg eq '-i') { push @include_list, shift @ARGV; } |
283 | elsif ($arg eq '-x') { push @exclude_list, shift @ARGV; } | 288 | elsif ($arg eq '-x') { push @exclude_list, shift @ARGV; } |
284 | elsif ($arg eq '-X') { push @revlist_options, "--no-merges"; } | 289 | elsif ($arg eq '-X') { push @revlist_options, "--no-merges"; } |
290 | elsif ($arg eq '-z') { $abbreviate_url = 1; } | ||
285 | elsif ($arg eq '-d') { $debug++; } | 291 | elsif ($arg eq '-d') { $debug++; } |
286 | else { usage(); } | 292 | else { usage(); } |
287 | } | 293 | } |
@@ -404,17 +410,19 @@ sub send_commit_notice($$) | |||
404 | my ($ref,$obj) = @_; | 410 | my ($ref,$obj) = @_; |
405 | my %info = get_object_info($obj); | 411 | my %info = get_object_info($obj); |
406 | my @notice = (); | 412 | my @notice = (); |
407 | my ($url,$subject); | 413 | my ($url,$subject,$obj_string); |
408 | 414 | ||
409 | if ($gitweb_url) | 415 | if ($gitweb_url) |
410 | { | 416 | { |
411 | open REVPARSE, "-|" or exec "git", "rev-parse", "--short", $obj or die "cannot exec git-rev-parse"; | 417 | if ($abbreviate_url) |
412 | my $short_obj = <REVPARSE>; | 418 | { |
413 | close REVPARSE or die $! ? "Cannot execute rev-parse: $!" : "rev-parse exited with status: $?"; | 419 | open REVPARSE, "-|" or exec "git", "rev-parse", "--short", $obj or die "cannot exec git-rev-parse"; |
414 | 420 | $obj_string = <REVPARSE>; | |
415 | $short_obj = $obj if not defined $short_obj; | 421 | chomp $obj_string if defined $obj_string; |
416 | chomp $short_obj; | 422 | close REVPARSE or die $! ? "Cannot execute rev-parse: $!" : "rev-parse exited with status: $?"; |
417 | $url = "$gitweb_url/?a=$info{type};h=$short_obj"; | 423 | } |
424 | $obj_string = $obj if not defined $obj_string; | ||
425 | $url = "$gitweb_url/?a=$info{type};h=$obj_string"; | ||
418 | } | 426 | } |
419 | 427 | ||
420 | if ($info{"type"} eq "tag") | 428 | if ($info{"type"} eq "tag") |
@@ -461,7 +469,7 @@ sub send_commit_notice($$) | |||
461 | } | 469 | } |
462 | else | 470 | else |
463 | { | 471 | { |
464 | push @notice, "Diff: $gitweb_url/?a=commitdiff;h=$obj" if $gitweb_url; | 472 | push @notice, "Diff: $gitweb_url/?a=commitdiff;h=$obj_string" if $gitweb_url; |
465 | } | 473 | } |
466 | $subject = $info{"author_name"}; | 474 | $subject = $info{"author_name"}; |
467 | } | 475 | } |