From a6b329689782ddd22b4ecd52d0b375e0841ca682 Mon Sep 17 00:00:00 2001 From: Holger Weiss Date: Sat, 24 Oct 2009 22:55:44 +0200 Subject: 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. --- tools/git-notify | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'tools/git-notify') 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(@) return @table; } +# return the gitweb URL of the given commit or undef +sub gitweb_url($$) +{ +} + # format an integer date + timezone as string # algorithm taken from git's date.c sub format_date($$) @@ -317,6 +322,7 @@ sub send_commit_notice($$) my ($ref,$obj) = @_; my %info = get_object_info($obj); my @notice = (); + my $url; open DIFF, "-|" or exec "git", "diff-tree", "-p", "-M", "--no-commit-id", $obj or die "cannot exec git-diff-tree"; my $diff = join("", ); @@ -324,6 +330,17 @@ sub send_commit_notice($$) return if length($diff) == 0; + if ($gitweb_url) + { + open REVPARSE, "-|" or exec "git", "rev-parse", "--short", $obj or die "cannot exec git-rev-parse"; + my $short_obj = ; + close REVPARSE or die $! ? "Cannot execute rev-parse: $!" : "rev-parse exited with status: $?"; + + $short_obj = $obj if not defined $short_obj; + chomp $short_obj; + $url = "$gitweb_url/?a=commit;h=$short_obj"; + } + push @notice, format_table( "Module: $repos_name", "Branch: $ref", @@ -331,7 +348,7 @@ sub send_commit_notice($$) "Author:" . $info{"author"}, $info{"committer"} ne $info{"author"} ? "Committer:" . $info{"committer"} : undef, "Date:" . format_date($info{"author_date"},$info{"author_tz"}), - $gitweb_url ? "URL: $gitweb_url/?a=commit;h=$obj" : undef), + $url ? "URL: $url" : undef), "", @{$info{"log"}}, "", -- cgit v1.2.3-74-g34f1