Do not distribute a copy of gitlog-to-changelog.
authorWerner Koch <wk@gnupg.org>
Mon, 5 Nov 2012 18:28:57 +0000 (19:28 +0100)
committerWerner Koch <wk@gnupg.org>
Mon, 5 Nov 2012 18:28:57 +0000 (19:28 +0100)
* Makefile.am (GITLOG_TO_CHANGELOG): New.
(gen-ChangeLog): Require an installed gitlog-to-changelog.
* scripts/gitlog-to-changelog: Remove.

* README.SVN: Remove.
* REMOVE.GIT: New.

Makefile.am
README.GIT [moved from README.SVN with 82% similarity]
scripts/gitlog-to-changelog [deleted file]

index 86fcd97..f1dbd09 100644 (file)
@@ -22,14 +22,16 @@ AUTOMAKE_OPTIONS = dist-bzip2
 DISTCHECK_CONFIGURE_FLAGS = --disable-random-daemon \
   --enable-ciphers=arcfour:blowfish:cast5:des:aes:twofish:serpent:rfc2268:seed:camellia
 
+# (A suitable gitlog-to-changelog script can be found in GnuPG master.)
+GITLOG_TO_CHANGELOG=gitlog-to-changelog
+
 DIST_SUBDIRS = m4 compat mpi cipher random src doc tests
 SUBDIRS =         compat mpi cipher random src doc tests
-EXTRA_DIST = autogen.sh README.SVN                                     \
+EXTRA_DIST = autogen.sh README.GIT                                     \
              ChangeLog-2011 scripts/ChangeLog-2011 doc/ChangeLog-2011  \
              m4/ChangeLog-2011 cipher/ChangeLog-2011 src/ChangeLog-2011 \
              random/ChangeLog-2011 tests/ChangeLog-2011 mpi/ChangeLog-2011 \
-             scripts/gitlog-to-changelog scripts/git-log-footer        \
-             scripts/git-log-fix
+             scripts/git-log-footer scripts/git-log-fix
 
 DISTCLEANFILES =
 
@@ -56,7 +58,7 @@ gen_start_date = 2011-12-01T14:00:00
 gen-ChangeLog:
        if test -d $(top_srcdir)/.git; then                             \
          (cd $(top_srcdir) &&                                          \
-           ./scripts/gitlog-to-changelog                               \
+           $(GITLOG_TO_CHANGELOG) --append-dot --tear-off              \
            --amend=scripts/git-log-fix                                 \
            --since=$(gen_start_date) ) > $(distdir)/cl-t;              \
           cat $(top_srcdir)/scripts/git-log-footer >> $(distdir)/cl-t;  \
similarity index 82%
rename from README.SVN
rename to README.GIT
index ae17923..ee2c638 100644 (file)
@@ -1,9 +1,11 @@
-If you are building from CVS, run the script
+If you are building from GIT, run the script
 
 ./autogen.sh
 
 first, to make sure that you have all the necessary maintainer tools
-are installed and to build the actual configuration files.  Then run
+are installed and to build the actual configuration files.  If you
+have just checked out from GIT, you should add the option "--force" to
+autogen.sh so that meta data is noticed by autom4te.cache.  Then run
 
 ./configure --enable-maintainer-mode
 
@@ -14,7 +16,7 @@ tools, or the tools are not installed, you may use environment
 variables to override the default tool names:
 
  AUTOMAKE_SUFFIX  is used as a suffix for all tools from the automake
-                  package.  For example 
+                  package.  For example
                      AUTOMAKE_SUFFIX="-1.7" ./autogen.sh
                   uses "automake-1.7" and "aclocal-1.7.
  AUTOMAKE_PREFIX  is used as a prefix for all tools from the automake
@@ -35,17 +37,13 @@ It is also possible to use the variable name AUTOMAKE, AUTOCONF,
 ACLOCAL, AUTOHEADER, GETTEXT and MSGMERGE to directly specify the name
 of the programs to run.  It is however better to use the suffix and
 prefix forms as described above because that does not require
-knowledge about the actual tools used by autgen.sh.
+knowledge about the actual tools used by autogen.sh.
 
 
 Please don't use autopoint, libtoolize or autoreconf unless you are
 the current maintainer and want to update the standard configuration
-files.  All those files should be in the CVS and only updated manually
+files.  All those files should be in GIT and only updated manually
 if the maintainer decides that newer versions are required.  The
 maintainer should also make sure that the required version of automake
 et al. are properly indicated at the top of configure.ac and take care
 to copy the files and not merely use symlinks.
-
-
-
-
diff --git a/scripts/gitlog-to-changelog b/scripts/gitlog-to-changelog
deleted file mode 100755 (executable)
index 40a8035..0000000
+++ /dev/null
@@ -1,345 +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 = '2011-11-02 07:53'; # 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-2011 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
-
-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.
-   --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;
-  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,
-    ) 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";
-
-      # 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@example.com>' 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 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";
-        }
-
-      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"
-# time-stamp-time-zone: "UTC"
-# time-stamp-end: "'; # UTC"
-# End: