diff options
| author | Werner Koch <[email protected]> | 2013-02-25 13:40:36 +0000 | 
|---|---|---|
| committer | Werner Koch <[email protected]> | 2013-02-25 13:40:36 +0000 | 
| commit | 967e043ac42330ee692f23d05ce3a0dd457f2119 (patch) | |
| tree | e4a99f514587254e0f96b95064eb996df2b478e6 /build-aux/gitlog-to-changelog | |
| parent | Declare next version to be 1.4.0 (diff) | |
| download | gpgme-967e043ac42330ee692f23d05ce3a0dd457f2119.tar.gz gpgme-967e043ac42330ee692f23d05ce3a0dd457f2119.zip | |
Remove included gitlog-to-changelog.
* build-aux/gitlog-to-changelog: Remove.
* configure.ac (GITLOG_TO_CHANGELOG): Default to just
gitlog-to-changelog.
Diffstat (limited to 'build-aux/gitlog-to-changelog')
| -rwxr-xr-x | build-aux/gitlog-to-changelog | 375 | 
1 files changed, 0 insertions, 375 deletions
| diff --git a/build-aux/gitlog-to-changelog b/build-aux/gitlog-to-changelog deleted file mode 100755 index 5cf071f6..00000000 --- a/build-aux/gitlog-to-changelog +++ /dev/null @@ -1,375 +0,0 @@ -eval '(exit $?0)' && eval 'exec perl -wS "$0" ${1+"$@"}' -  & eval 'exec perl -wS "$0" $argv:q' -    if 0; -# Convert git log output to ChangeLog format. - -my $VERSION = '2012-01-24 15:58 (wk)'; # UTC -# The definition above must lie within the first 8 lines in order -# for the Emacs time-stamp write hook (at end) to update it. -# If you change this file with Emacs, please let the write hook -# do its job.  Otherwise, update this string manually. - -# Copyright (C) 2008-2012 Free Software Foundation, Inc. - -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program.  If not, see <http://www.gnu.org/licenses/>. - -# Written by Jim Meyering -# Custom bugs bred by Werner Koch - -use strict; -use warnings; -use Getopt::Long; -use POSIX qw(strftime); - -(my $ME = $0) =~ s|.*/||; - -# use File::Coda; # http://meyering.net/code/Coda/ -END { -  defined fileno STDOUT or return; -  close STDOUT and return; -  warn "$ME: failed to close standard output: $!\n"; -  $? ||= 1; -} - -sub usage ($) -{ -  my ($exit_code) = @_; -  my $STREAM = ($exit_code == 0 ? *STDOUT : *STDERR); -  if ($exit_code != 0) -    { -      print $STREAM "Try `$ME --help' for more information.\n"; -    } -  else -    { -      print $STREAM <<EOF; -Usage: $ME [OPTIONS] [ARGS] - -Convert git log output to ChangeLog format.  If present, any ARGS -are passed to "git log".  To avoid ARGS being parsed as options to -$ME, they may be preceded by '--'. - -OPTIONS: - -   --amend=FILE FILE maps from an SHA1 to perl code (i.e., s/old/new/) that -                  makes a change to SHA1's commit log text or metadata. -   --append-dot append a dot to the first line of each commit message if -                  there is no other punctuation or blank at the end. -   --tear-off   tear off all commit log lines after a '--' line and -                skip log entry with the first body line being '--'. -   --since=DATE convert only the logs since DATE; -                  the default is to convert all log entries. -   --format=FMT set format string for commit subject and body; -                  see 'man git-log' for the list of format metacharacters; -                  the default is '%s%n%b%n' - -   --help       display this help and exit -   --version    output version information and exit - -EXAMPLE: - -  $ME --since=2008-01-01 > ChangeLog -  $ME -- -n 5 foo > last-5-commits-to-branch-foo - -In a FILE specified via --amend, comment lines (starting with "#") are ignored. -FILE must consist of <SHA,CODE+> pairs where SHA is a 40-byte SHA1 (alone on -a line) referring to a commit in the current project, and CODE refers to one -or more consecutive lines of Perl code.  Pairs must be separated by one or -more blank line. - -Here is sample input for use with --amend=FILE, from coreutils: - -3a169f4c5d9159283548178668d2fae6fced3030 -# fix typo in title: -s/all tile types/all file types/ - -1379ed974f1fa39b12e2ffab18b3f7a607082202 -# Due to a bug in vc-dwim, I mis-attributed a patch by Paul to myself. -# Change the author to be Paul.  Note the escaped "@": -s,Jim .*>,Paul Eggert <eggert\@cs.ucla.edu>, - -EOF -    } -  exit $exit_code; -} - -# If the string $S is a well-behaved file name, simply return it. -# If it contains white space, quotes, etc., quote it, and return the new string. -sub shell_quote($) -{ -  my ($s) = @_; -  if ($s =~ m![^\w+/.,-]!) -    { -      # Convert each single quote to '\'' -      $s =~ s/\'/\'\\\'\'/g; -      # Then single quote the string. -      $s = "'$s'"; -    } -  return $s; -} - -sub quoted_cmd(@) -{ -  return join (' ', map {shell_quote $_} @_); -} - -# Parse file F. -# Comment lines (starting with "#") are ignored. -# F must consist of <SHA,CODE+> pairs where SHA is a 40-byte SHA1 -# (alone on a line) referring to a commit in the current project, and -# CODE refers to one or more consecutive lines of Perl code. -# Pairs must be separated by one or more blank line. -sub parse_amend_file($) -{ -  my ($f) = @_; - -  open F, '<', $f -    or die "$ME: $f: failed to open for reading: $!\n"; - -  my $fail; -  my $h = {}; -  my $in_code = 0; -  my $sha; -  while (defined (my $line = <F>)) -    { -      $line =~ /^\#/ -        and next; -      chomp $line; -      $line eq '' -        and $in_code = 0, next; - -      if (!$in_code) -        { -          $line =~ /^([0-9a-fA-F]{40})$/ -            or (warn "$ME: $f:$.: invalid line; expected an SHA1\n"), -              $fail = 1, next; -          $sha = lc $1; -          $in_code = 1; -          exists $h->{$sha} -            and (warn "$ME: $f:$.: duplicate SHA1\n"), -              $fail = 1, next; -        } -      else -        { -          $h->{$sha} ||= ''; -          $h->{$sha} .= "$line\n"; -        } -    } -  close F; - -  $fail -    and exit 1; - -  return $h; -} - -{ -  my $since_date; -  my $format_string = '%s%n%b%n'; -  my $amend_file; -  my $append_dot = 0; -  my $tear_off = 0; -  GetOptions -    ( -     help => sub { usage 0 }, -     version => sub { print "$ME version $VERSION\n"; exit }, -     'since=s' => \$since_date, -     'format=s' => \$format_string, -     'amend=s' => \$amend_file, -     'append-dot' => \$append_dot, -     'tear-off' => \$tear_off, -    ) or usage 1; - - -  defined $since_date -    and unshift @ARGV, "--since=$since_date"; - -  # This is a hash that maps an SHA1 to perl code (i.e., s/old/new/) -  # that makes a correction in the log or attribution of that commit. -  my $amend_code = defined $amend_file ? parse_amend_file $amend_file : {}; - -  my @cmd = (qw (git log --log-size), -             '--pretty=format:%H:%ct  %an  <%ae>%n%n'.$format_string, @ARGV); -  open PIPE, '-|', @cmd -    or die ("$ME: failed to run `". quoted_cmd (@cmd) ."': $!\n" -            . "(Is your Git too old?  Version 1.5.1 or later is required.)\n"); - -  my $prev_date_line = ''; -  my @prev_coauthors = (); - -  while (1) -    { -      defined (my $in = <PIPE>) -        or last; -      $in =~ /^log size (\d+)$/ -        or die "$ME:$.: Invalid line (expected log size):\n$in"; -      my $log_nbytes = $1; - -      my $log; -      my $n_read = read PIPE, $log, $log_nbytes; -      $n_read == $log_nbytes -        or die "$ME:$.: unexpected EOF\n"; - -      # Skip log entries with the default merge commit message. -      $log =~ /^.*\n\nMerge branch '.*\n\s*/ -        and goto SKIPCOMMIT; - -      # Skip log entries if the body starts with a tear off marker. -      if ($tear_off) -        { -          $log =~ /^.*\n\n.*\n--\s*/ -            and goto SKIPCOMMIT; -        } - -      # Extract leading hash. -      my ($sha, $rest) = split ':', $log, 2; -      defined $sha -        or die "$ME:$.: malformed log entry\n"; -      $sha =~ /^[0-9a-fA-F]{40}$/ -        or die "$ME:$.: invalid SHA1: $sha\n"; - -      # If this commit's log requires any transformation, do it now. -      my $code = $amend_code->{$sha}; -      if (defined $code) -        { -          eval 'use Safe'; -          my $s = new Safe; -          # Put the unpreprocessed entry into "$_". -          $_ = $rest; - -          # Let $code operate on it, safely. -          my $r = $s->reval("$code") -            or die "$ME:$.:$sha: failed to eval \"$code\":\n$@\n"; - -          # Note that we've used this entry. -          delete $amend_code->{$sha}; - -          # Update $rest upon success. -          $rest = $_; -        } - -      my @line = split "\n", $rest; -      my $author_line = shift @line; -      defined $author_line -        or die "$ME:$.: unexpected EOF\n"; -      $author_line =~ /^(\d+)  (.*>)$/ -        or die "$ME:$.: Invalid line " -          . "(expected date/author/email):\n$author_line\n"; - -      my $date_line = sprintf "%s  $2\n", strftime ("%F", localtime ($1)); - -      # Format 'Co-authored-by: A U Thor <[email protected]>' lines in -      # standard multi-author ChangeLog format. -      my @coauthors = grep /^Co-authored-by:.*$/, @line; -      for (@coauthors) -        { -          s/^Co-authored-by:\s*/\t    /; -          s/\s*</  </; - -          /<.*?@.*\..*>/ -            or warn "$ME: warning: missing email address for " -              . substr ($_, 5) . "\n"; -        } - -      # If this header would be the same as the previous date/name/email/ -      # coauthors header, then arrange not to print it. -      if ($date_line ne $prev_date_line or "@coauthors" ne "@prev_coauthors") -        { -          $prev_date_line eq '' -            or print "\n"; -          print $date_line; -          @coauthors -            and print join ("\n", @coauthors), "\n"; -        } -      $prev_date_line = $date_line; -      @prev_coauthors = @coauthors; - -      # Omit "Co-authored-by..." and "Signed-off-by..." lines. -      @line = grep !/^Signed-off-by: .*>$/, @line; -      @line = grep !/^Co-authored-by: /, @line; - -      # Remove everything after a line with 2 dashes at the beginning. -      if ($tear_off) -        { -           my @tmpline; -           foreach (@line) -             { -	       last if /^--\s*$/; -               push @tmpline,$_; -             } -           @line = @tmpline; -        } - -      # Remove leading and trailing blank lines. -      if (@line) -        { -          while ($line[0] =~ /^\s*$/) { shift @line; } -          while ($line[$#line] =~ /^\s*$/) { pop @line; } -        } - -      # If there were any lines -      if (@line == 0) -        { -          warn "$ME: warning: empty commit message:\n  $date_line\n"; -        } -      else -        { -          if ($append_dot) -            { -              # If the first line of the message has enough room, then -              if (length $line[0] < 72) -                { -                  # append a dot if there is no other punctuation or blank -                  # at the end. -                  $line[0] =~ /[[:punct:]\s]$/ -                    or $line[0] .= '.'; -                } -            } - -          # Prefix each non-empty line with a TAB. -          @line = map { length $_ ? "\t$_" : '' } @line; - -          print "\n", join ("\n", @line), "\n"; -        } - -    SKIPCOMMIT: -      defined ($in = <PIPE>) -        or last; -      $in ne "\n" -        and die "$ME:$.: unexpected line:\n$in"; -    } - -  close PIPE -    or die "$ME: error closing pipe from " . quoted_cmd (@cmd) . "\n"; -  # FIXME-someday: include $PROCESS_STATUS in the diagnostic - -  # Complain about any unused entry in the --amend=F specified file. -  my $fail = 0; -  foreach my $sha (keys %$amend_code) -    { -      warn "$ME:$amend_file: unused entry: $sha\n"; -      $fail = 1; -    } - -  exit $fail; -} - -# Local Variables: -# mode: perl -# indent-tabs-mode: nil -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "my $VERSION = '" -# time-stamp-format: "%:y-%02m-%02d %02H:%02M (wk)" -# time-stamp-time-zone: "UTC" -# time-stamp-end: "'; # UTC" -# End: | 
