I am again requesting the addition of options to tools/git_changelog so I can more easily produce the release notes. I asked for this during 9.1 development and it was rejected. I am currently using my own custom version of the tool, but have to merge community improvements into the tool every year before I use it.
The attached patch gives you an idea of what I want to add. New options are: --details-after Show branch and author info after the commit description --master-only Show commits made exclusively to the master branch --oldest-first Show oldest commits first I know of now to do this with a post-processing script. -- Bruce Momjian <br...@momjian.us> http://momjian.us EnterpriseDB http://enterprisedb.com + It's impossible for everything to be true. +
*** /pgdev/git_changelog 2011-03-15 13:47:30.000000000 -0400 --- /rtmp/pggitlog 2012-04-25 15:45:16.000000000 -0400 *************** *** 43,52 **** # Might want to make this parameter user-settable. my $timestamp_slop = 600; my $post_date = 0; my $since; ! Getopt::Long::GetOptions('post-date' => \$post_date, 'since=s' => \$since) || usage(); usage() if @ARGV; my @git = qw(git log --date=iso); --- 43,62 ---- # Might want to make this parameter user-settable. my $timestamp_slop = 600; + my $details_after = 0; my $post_date = 0; + my $master_only = 0; + my $oldest_first = 0; my $since; ! my @output_buffer; ! my $output_line = ''; ! ! Getopt::Long::GetOptions('details-after' => \$details_after, ! 'master-only' => \$master_only, ! 'post-date' => \$post_date, ! 'oldest-first' => \$oldest_first, 'since=s' => \$since) || usage(); + usage() if @ARGV; my @git = qw(git log --date=iso); *************** *** 193,211 **** last if !defined $best_branch; my $winner = $all_commits_by_branch{$best_branch}->[$position{$best_branch}]; ! printf "Author: %s\n", $winner->{'author'}; ! foreach my $c (@{$winner->{'commits'}}) { ! printf "Branch: %s", $c->{'branch'}; ! if (defined $c->{'last_tag'}) { ! printf " Release: %s", $c->{'last_tag'}; ! } ! printf " [%s] %s\n", substr($c->{'commit'}, 0, 9), $c->{'date'}; } ! print "Commit-Order-Inversions: $best_inversions\n" ! if $best_inversions != 0; ! print "\n"; ! print $winner->{'message'}; ! print "\n"; $winner->{'done'} = 1; for my $branch (@BRANCHES) { my $leader = $all_commits_by_branch{$branch}->[$position{$branch}]; --- 203,223 ---- last if !defined $best_branch; my $winner = $all_commits_by_branch{$best_branch}->[$position{$best_branch}]; ! ! # check for master-only ! if (! $master_only || ($winner->{'commits'}[0]->{'branch'} eq 'master' && ! @{$winner->{'commits'}} == 1)) { ! output_details($winner) if (! $details_after); ! output_entry("Commit-Order-Inversions: $best_inversions\n") ! if $best_inversions != 0; ! output_entry("\n") if (! $details_after); ! output_entry("%s", $winner->{'message'}); ! output_details($winner) if ($details_after); ! output_entry("\n"); ! unshift(@output_buffer, $output_line) if ($oldest_first); ! $output_line = ''; } ! $winner->{'done'} = 1; for my $branch (@BRANCHES) { my $leader = $all_commits_by_branch{$branch}->[$position{$branch}]; *************** *** 216,221 **** --- 228,235 ---- } } + print @output_buffer if ($oldest_first); + sub push_commit { my ($c) = @_; my $ht = hash_commit($c); *************** *** 274,284 **** return $gm - $tzoffset; } sub usage { print STDERR <<EOM; ! Usage: git_changelog [--post-date/-p] [--since=SINCE] ! --post-date Show branches made after a commit occurred ! --since Print only commits dated since SINCE EOM exit 1; } --- 288,323 ---- return $gm - $tzoffset; } + sub output_entry { + ($oldest_first) ? ($output_line .= sprintf(shift, @_)) : printf(@_); + } + + sub output_details { + my $item = shift; + + if ($details_after) { + $item->{'author'} =~ m{^(.*?)\s*<[^>]*>$}; + output_entry("(%s)\n", $1); + } else { + output_entry("Author: %s\n", $item->{'author'}); + } + foreach my $c (@{$item->{'commits'}}) { + output_entry("Branch: %s ", $c->{'branch'}) if (! $master_only); + if (defined $c->{'last_tag'}) { + output_entry("Release: %s ", $c->{'last_tag'}); + } + output_entry("[%s] %s\n", substr($c->{'commit'}, 0, 9), $c->{'date'}); + } + } + sub usage { print STDERR <<EOM; ! Usage: git_changelog [--details-after/-d] [--master-only/-m] [--oldest-first/-o] [--post-date/-p] [--since=SINCE] ! --details-after Show branch and author info after the commit description ! --master-only Show commits made exclusively to the master branch ! --oldest-first Show oldest commits first ! --post-date Show branches made after a commit occurred ! --since Print only commits dated since SINCE EOM exit 1; }
-- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers