diff options
author | Holger Weiss <holger@zedat.fu-berlin.de> | 2009-10-24 22:55:44 +0200 |
---|---|---|
committer | Holger Weiss <holger@zedat.fu-berlin.de> | 2009-10-24 22:55:44 +0200 |
commit | a6b329689782ddd22b4ecd52d0b375e0841ca682 (patch) | |
tree | 54bcd885c32dc4de0cdf8980ceb93b9bb5573925 /tools | |
parent | aa5dfec91726da8d9d4a4fa63f11c7b0da8c9401 (diff) | |
download | monitoring-plugins-a6b329689782ddd22b4ecd52d0b375e0841ca682.tar.gz |
git-nofity: Try to shorten Gitweb URLs
Instead of using the full SHA1 values of commit object names within
Gitweb URLs, try to abbreviate them to a shorter unique name.
Diffstat (limited to 'tools')
-rwxr-xr-x | tools/git-notify | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/tools/git-notify b/tools/git-notify index a786f839..a158e872 100755 --- a/tools/git-notify +++ b/tools/git-notify | |||
@@ -168,6 +168,11 @@ sub format_table(@) | |||
168 | return @table; | 168 | return @table; |
169 | } | 169 | } |
170 | 170 | ||
171 | # return the gitweb URL of the given commit or undef | ||
172 | sub gitweb_url($$) | ||
173 | { | ||
174 | } | ||
175 | |||
171 | # format an integer date + timezone as string | 176 | # format an integer date + timezone as string |
172 | # algorithm taken from git's date.c | 177 | # algorithm taken from git's date.c |
173 | sub format_date($$) | 178 | sub format_date($$) |
@@ -317,6 +322,7 @@ sub send_commit_notice($$) | |||
317 | my ($ref,$obj) = @_; | 322 | my ($ref,$obj) = @_; |
318 | my %info = get_object_info($obj); | 323 | my %info = get_object_info($obj); |
319 | my @notice = (); | 324 | my @notice = (); |
325 | my $url; | ||
320 | 326 | ||
321 | open DIFF, "-|" or exec "git", "diff-tree", "-p", "-M", "--no-commit-id", $obj or die "cannot exec git-diff-tree"; | 327 | open DIFF, "-|" or exec "git", "diff-tree", "-p", "-M", "--no-commit-id", $obj or die "cannot exec git-diff-tree"; |
322 | my $diff = join("", <DIFF>); | 328 | my $diff = join("", <DIFF>); |
@@ -324,6 +330,17 @@ sub send_commit_notice($$) | |||
324 | 330 | ||
325 | return if length($diff) == 0; | 331 | return if length($diff) == 0; |
326 | 332 | ||
333 | if ($gitweb_url) | ||
334 | { | ||
335 | open REVPARSE, "-|" or exec "git", "rev-parse", "--short", $obj or die "cannot exec git-rev-parse"; | ||
336 | my $short_obj = <REVPARSE>; | ||
337 | close REVPARSE or die $! ? "Cannot execute rev-parse: $!" : "rev-parse exited with status: $?"; | ||
338 | |||
339 | $short_obj = $obj if not defined $short_obj; | ||
340 | chomp $short_obj; | ||
341 | $url = "$gitweb_url/?a=commit;h=$short_obj"; | ||
342 | } | ||
343 | |||
327 | push @notice, format_table( | 344 | push @notice, format_table( |
328 | "Module: $repos_name", | 345 | "Module: $repos_name", |
329 | "Branch: $ref", | 346 | "Branch: $ref", |
@@ -331,7 +348,7 @@ sub send_commit_notice($$) | |||
331 | "Author:" . $info{"author"}, | 348 | "Author:" . $info{"author"}, |
332 | $info{"committer"} ne $info{"author"} ? "Committer:" . $info{"committer"} : undef, | 349 | $info{"committer"} ne $info{"author"} ? "Committer:" . $info{"committer"} : undef, |
333 | "Date:" . format_date($info{"author_date"},$info{"author_tz"}), | 350 | "Date:" . format_date($info{"author_date"},$info{"author_tz"}), |
334 | $gitweb_url ? "URL: $gitweb_url/?a=commit;h=$obj" : undef), | 351 | $url ? "URL: $url" : undef), |
335 | "", | 352 | "", |
336 | @{$info{"log"}}, | 353 | @{$info{"log"}}, |
337 | "", | 354 | "", |