>From ddf7ae432f7dfdba465fefd5c719bc4a9d6477e8 Mon Sep 17 00:00:00 2001
From: Bernhard Voelker
Date: Mon, 25 Aug 2014 09:54:13 +0200
Subject: [PATCH] maint: generate ChangeLog from git commit messages
* ChangeLog: Remove, as it is not maintained manually any longer.
* Makefile.am (gen-ChangeLog): Add phony target to create the ChangeLog
file in the distribution tarball from the git commit messages - starting
from 2014 - and concatenating the file 'ChangeLog-2013'.
(dist-hook): Add the above new target as dependency.
* ChangeLog-2013: Add a newline at the top for nicer separation in
the concatenated ChangeLog file in the distribution tarball.
Bump Copyright year.
* import-gnulib.config (maintainer_modules): Add 'gitlog-to-changelog'
module. Furthermore create an empty ChangeLog file to silence automake,
and set DO_NOT_WANT_CHANGELOG_DRIVER environment variable as we do not
want the import to fail if the changelog driver is not installed.
* build-aux/git-log-fix: Add rules to fix some git commit messages
during ChangeLog generation.
* build-aux/.gitignore: Add entry for 'gitlog-to-changelog'.
* build-aux/.cvsignore: Likewise.
* .gitignore: Likewise.
* README-hacking: Remove item to add a ChangeLog entry, and instead
mention to give a decent commit message. In the command sequence for
a complete session, remove ChangeLog editing, too.
* doc/find-maint.texi (Release Information): Remove ChangeLog editing.
*
---
.gitignore | 1 +
ChangeLog | 224 --------------------------------------------------
ChangeLog-2013 | 3 +-
Makefile.am | 17 +++-
README-hacking | 4 +-
build-aux/.cvsignore | 1 +
build-aux/.gitignore | 1 +
build-aux/git-log-fix | 21 +++++
doc/find-maint.texi | 7 +-
import-gnulib.config | 6 ++
10 files changed, 54 insertions(+), 231 deletions(-)
delete mode 100644 ChangeLog
create mode 100644 build-aux/git-log-fix
diff --git a/.gitignore b/.gitignore
index 248d902..ce351cb 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,5 @@
ABOUT-NLS
+ChangeLog
Makefile
Makefile.in
aclocal.m4
diff --git a/ChangeLog b/ChangeLog
deleted file mode 100644
index 4bbc6ab..0000000
--- a/ChangeLog
+++ /dev/null
@@ -1,224 +0,0 @@
-2014-08-24 James Youngman
-
- Stop using the obsolete modules strtol and strtoul.
- * import-gnulib.config (modules): remove strtol and strtoul.
-
-2014-08-23 James Youngman
-
- Revert the previous ChangeLog split and split at 2013 instead.
- * ChangeLog-2013: Split the ChangeLog at 2013 rather than 2008;
- hence, delete ChangeLog-2008.
- * Makefile.am (EXTRA_DIST): Distribute ChangeLog-2013.
- * .gitattributes: Use the ChangeLog merge driver for ChangeLog-2013.
-
- Remove obsolete TODO entries.
- * TODO: remove BeOS multibyte entry (we fixed this by using the
- gnulib wcwidth module; see https://savannah.gnu.org/bugs/?19979).
- Remove comment about problems with gcc-2.95.2 on
- sparc-sun-sunos4.1.3_U1; we'll look at the problem if anyone ever
- complains that something doesn't work (though gnulib may in fact
- no longer work on such an old platform in any case).
- Remove some TODOs around locate performance; nobody's reported
- performance issues, and we can examine any specific issues when
- the arise.
- Remove TODO about the largeness of depcomp; at 22KiB, it's much
- smaller than this ChangeLog file, for example.
-
- Remove obsolete TOLOWER/TOUPPER macros.
- * locate/locate.c: The TOLOWER and TOUPPER macros are no longer
- used. Do not define them.
- * TODO: Remove obsolete entry for TOLOWER/TOUPPER.
-
- Don't overflow sig_atomic_t for --max-procs.
- * xargs/xargs.c (__STDC_LIMIT_MACROS): Define __STDC_LIMIT_MACROS
- in order to ensure that defines the SIG_ATOMIC_MAX
- macro, which we need.
- (MAX_PROC_MAX): Define this as the maximum allowed value of
- proc_max.
- (main): Show the value of MAX_PROC_MAX for --show-limits.
- (increment_proc_max): Don't increment proc_max beyond
- MAX_PROC_MAX.
- (parse_num): Fix small error in the error message; if the limit on
- the value of a command-line argument is N, explain that the user
- should specify a value <= N, not < N.
- * xargs/xargs.1: Document the upper limit on --max-procs.
- * doc/find.texi (Controlling Parallelism): Document the upper
- limit on the amount of parallelism.
- (xargs options): Document the limit on the value you can specify
- for --max-procs.
-
- Prepare for later generating the ChangeLog file from the git log.
- * ChangeLog-2008: Split this file out from the main ChangeLog file.
- * Makefile.am (EXTRA_DIST): Distribute ChangeLog-2008.
- * .gitattributes: Use the changelog merge driver for
- ChangeLog-2008.
-
-2014-08-21 Sami Kerola (tiny change)
-
- When reporting failure to change/save directory, mention its name.
- * find/exec.c (prep_child_for_exec): When issuing an error message
- about a failure to change directory, mention the directory.
- * find/util.c (record_initial_cwd): Do the same when saving the
- initial working directory.
- (cleanup_initial_cwd): Also when restoring the initial working
- directory.
-
-2014-08-19 James Youngman
-
- Fix bug #42903: the print statement doesn't exist in Python 3.
- * find/testsuite/checklists.py (main): Avoid using the print
- statement as it is not compatible with Python 3. We use
- sys.stdout.write, since our needs here are simple.
-
-2014-08-19 Bernhard Voelker
-
- doc: remove repeated paragraph in locate's texinfo manual
- * doc/find.texi (Invoking locate): Remove repeated sentence,
- introduced by commit FINDUTILS_4_2_23-1-28-g1e08148 in 2005.
- Reported by Dan Jacobsen in
- http://lists.gnu.org/archive/html/bug-findutils/2014-08/msg00003.html
- This patch was edited by James Youngman to include a ChangeLog
- update, hence the changed date.
-
-2014-08-19 James Youngman
-
- Update version to distinguish development tree from 4.5.14.
- * configure.ac: Update version number.
- * NEWS: Add header for new version , matching the version number
- now in configure.ac.
-
-2014-07-19 James Youngman
-
- Release findutils-4.5.14.
- * configure.ac: Update version number to 4.5.14.
- * NEWS: Likewise, and add today's date.
- * po/*: Update with 'make dist'.
-
- Standardize on "initialize".
- * find/exec.c (initialise_wd_for_exec): rename to
- initialize_wd_for_exec, since "initialize" is the preferred form
- even in UK spelling (the OED says "initialise" is a variant).
- Update callers (it's a static function). Update spelling in
- comments.
- * find/find.c (main): Fix missing "to" in error message and update
- "initialise" to "initialize". Update comment too.
- * find/ftsfind.c (main): Update spelling in error message.
- * lib/listfile.c (print_name_with_quoting): spelling change in
- comment.
- * find/tree.c (init_pred_perf): Likewise.
- * lib/extendbuf.c (extendbuf): Likewise.
- * lib/splitstring.h: Likewise.
- * find/print.c (format_date): Likewise.
- * doc/find-maint.texi (Tools): Update spelling.
-
- Bug #42793: mention the bugfix in NEWS.
- * NEWS: mention the bugfix.
-
- Fix bug #42793: "Failed to write output" with -ls.
- * lib/listfile.c (print_name_with_quoting): Avoid using the
- variable fprintf_result before it is initialised. I hope this
- fixes Savannah bug #42793.
-
- Update the version number following the recent release.
- * configure.ac: Move on from 4.5.13.
- * NEWS: Move on from 4.5.13.
-
-2014-07-16 James Youngman
-
- Prepare for release of 4.5.13.
- * configure.ac: Change the version number to 4.5.13.
- * NEWS: Mention some documentation bug fixes which have been
- applied (ChangeLog entries already exist for these). Change the
- version number of the top section of the NEWS file.
-
-2014-05-31 James Youngman
-
- Enable parallel tests.
- * find/testsuite/Makefile.am (AUTOMAKE_OPTIONS): Enable
- parallel-tests. This will only include tests known directly via
- $(TESTS), not DejaGnu tests.
-
- Check there are no duplicate configuration entries for test files.
- * find/testsuite/Makefile.am (EXTRA_DIST_XO): Remove duplicate items.
- (EXTRA_DIST_EXP): Likewise.
- (checklists): Run with the other checks, using check-local. Don't
- echo the full command, because it will make the summary of the
- Automake-driven tests scroll offscreen.
- (TEST_EXTENSIONS): Add .sh and .py.
-
- Routinely check .xo and .exp test file lists in a clearer way.
- * find/testsuite/checklists.py: Tiny program for checking that the
- correct lists of .xo and .exp files exist in the Makefile.am file.
- * Makefile.am (checklists): Update target to use the new program.
- Make this target phony.
-
-2014-05-25 Eric S. Raymond
-
- Fix errant backslash in find manpage.
- * find/find.1 (UNUSUAL FILENAMES): Fix errant backslash.
-
-2014-05-12 James Youngman
-
- Update German translation.
- * po/de.po: Update German translation from the Translation
- Project.
-
- Several updates and clarifications to README-hacking.
- * README-hacking: Explain that tool-versions.txt is not checked
- into git. The repository has grown from 14MB to 16MB. Gnulib is
- now a submodule and the directory we keep it in has changed.
- Remove the suggestion to rsync the translations from the
- translation project, since the files that fetches seem to be out
- of date. Move the instruction to update ChangeLog to a more
- prominent place. Mention that there is an electronic process for
- assignments in some locations. Update the copyright year.
-
-2014-05-11 James Youngman
-
- * gnulib: Update submodule to current version at origin/master.
-
- Fix inadequte quoting in AC_ARG_ENABLE usage.
- * configure.ac: Quote second argument of AC_ARG_ENABLE.
-
-2014-01-14 James Youngman
-
- Fix typo "ouptut".
- * locate/locate.1 (OPTIONS): fix typo "ouptut" (from an anonymous
- Savannah bug report #40804).
-
-2014-01-12 James Youngman
-
- Add source files to po/POTFILES.in.
- * po/POTFILES.in: Add some source file names which were missing.
-
-2014-01-12 Nguyá»
n Thái Ngá»c Duy (tiny change)
-
- * po/POTFILES.in: mark strings from gnulib for translation.
-
-2014-01-05 James Youngman
-
- Updated various translations from the Translation Project.
- * po/ru.po: Updated Russian translation from the Translation
- Project.
- * po/fr.po: Updated French translation.
- * po/pt_BR.po: Updated Brazilian Portuguese translation.
- * po/it.po: Updated Italian translation.
- * po/sr.po: Updated Serbian translation.
- * po/eo.po: Updated Esperanto translation.
- * po/tr.po: Updated Turkish translation.
- * po/fi.po: Updated Finnish translation.
- * po/el.po: Updated Greek translation.
-
- Updated Slovenian translation.
- * po/sl.po: Updated Slovenian translation from the Translation
- Project.
-
- -----
-
- Copyright (C) 1987, 1990, 1991, 1992, 1993, 1994, 1996, 1997,
- 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007, 2008,
- 2009, 2010, 2011, 2012, 2013, 2014 Free Software Foundation, Inc.
-
- Copying and distribution of this file, with or without
- modification, are permitted provided the copyright notice
- and this notice are preserved.
diff --git a/ChangeLog-2013 b/ChangeLog-2013
index 7ce43bd..dd3cdb9 100644
--- a/ChangeLog-2013
+++ b/ChangeLog-2013
@@ -1,3 +1,4 @@
+
2013-12-08 James Youngman
Bug #35753: check the success/failure of material I/O operations.
@@ -11390,7 +11391,7 @@
Copyright (C) 1987, 1990, 1991, 1992, 1993, 1994, 1996, 1997,
1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007, 2008,
- 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+ 2009, 2010, 2011, 2012, 2013, 2014 Free Software Foundation, Inc.
Copying and distribution of this file, with or without
modification, are permitted provided the copyright notice
diff --git a/Makefile.am b/Makefile.am
index 93fc7fa..d6dfddd 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -25,8 +25,23 @@ tool-versions.txt: Makefile
makeinfo --version ) > $@
-dist-hook: findutils-check-pofiles findutils-check-testfiles
+dist-hook: gen-ChangeLog findutils-check-pofiles findutils-check-testfiles
+.PHONY: gen-ChangeLog
+gen-ChangeLog:
+ $(AM_V_GEN)if test -d .git; then \
+ gen_start_date='2014-01-01' ; \
+ log_fix="$(top_srcdir)/build-aux/git-log-fix" ; \
+ test -e "$$log_fix" \
+ && amend_git_log="--amend=$$log_fix" \
+ || amend_git_log=; \
+ { $(top_srcdir)/build-aux/gitlog-to-changelog \
+ $$amend_git_log --since=$$gen_start_date \
+ && cat $(top_srcdir)/ChangeLog-2013 ; \
+ } > $(distdir)/cl-t \
+ && { rm -f $(distdir)/ChangeLog \
+ && mv $(distdir)/cl-t $(distdir)/ChangeLog; } \
+ fi
## Check that we actually shipped all the .po files. If this rule fails,
## check ALL_LINGUAS in configure.in against the po files in the source
diff --git a/README-hacking b/README-hacking
index 7d38f76..614a15b 100644
--- a/README-hacking
+++ b/README-hacking
@@ -137,11 +137,11 @@ If you plan to submit changes to findutils, please make sure you have
read the GNU coding standard (http://www.gnu.org/prep/standards/).
Some common things you might have forgotten to do are:
- - add a ChangeLog entry (for now we still do that manually)
- document your change in both the manual pages and the Texinfo file
- re-run the test suite (with Dejagnu installed!)
- add a test case for the bug you're fixing or feature you're adding
- mention your fix or change (if it's significant) in the NEWS file
+ - commit using a descriptive commit message
If you have patches, please generate them with "git format-patch" and
mail them to these addresses:
@@ -161,7 +161,7 @@ Here is a complete session
emacs doc/find.texi xargs/xargs.1
emacs xargs/testsuite/Makefile.am xargs/testsuite/xargs.gnu/blah.exp
make check
- emacs ChangeLog NEWS
+ emacs NEWS
# make sure you didn't break anything
make distcheck
diff --git a/build-aux/.cvsignore b/build-aux/.cvsignore
index 35d182e..3575724 100644
--- a/build-aux/.cvsignore
+++ b/build-aux/.cvsignore
@@ -19,3 +19,4 @@ useless-if-before-free
vc-list-files
update-copyright
unused-parameter.h
+gitlog-to-changelog
diff --git a/build-aux/.gitignore b/build-aux/.gitignore
index be5fe6e..fd1a93b 100644
--- a/build-aux/.gitignore
+++ b/build-aux/.gitignore
@@ -18,3 +18,4 @@ compile
/vc-list-files
/update-copyright
/unused-parameter.h
+/gitlog-to-changelog
diff --git a/build-aux/git-log-fix b/build-aux/git-log-fix
new file mode 100644
index 0000000..e597caa
--- /dev/null
+++ b/build-aux/git-log-fix
@@ -0,0 +1,21 @@
+# This file is expected to be used via gitlog-to-changelog's --amend=FILE
+# option. It specifies what changes to make to each given SHA1's commit
+# log and metadata, using Perl-eval'able expressions.
+
+# Remove superfluous "Conflicts:" marker.
+718bde657248dfc2270f6e0ed16cfb38e2510c2c
+s/Conflicts:$//m;
+s/ChangeLog$//m
+
+# Insert "* " before file name.
+68e2b1d6fd420787903142c02ce1a5e3ea2a7754
+s,(doc/find.texi),* $1,
+
+# Insert "* " before file name.
+603ccd84db3b4b8d6476b9217adeecaa77337781
+s,(find),* $1,
+
+# Insert name of changed file.
+1d6d1afa52f40ad7c776e3ff0d4415409377e6fb
+s/Mark/* po\/POTFILES.in: mark/;
+s/(translation)/$1./
diff --git a/doc/find-maint.texi b/doc/find-maint.texi
index 8b14fd4..0a16afb 100644
--- a/doc/find-maint.texi
+++ b/doc/find-maint.texi
@@ -684,9 +684,10 @@ This file enumerates all changes to the findutils source code (with
the possible exception of @file{.cvsignore} and @code{.gitignore}
changes). The level of detail used for this file should be sufficient
to answer the questions ``what changed?'' and ``why was it changed?''.
-If a change fixes a bug, always give the bug reference number in both
-the @file{ChangeLog} and @file{NEWS} files and of course also in the
-checkin message. In general, it should be possible to enumerate all
+The file is generated from the git commit messages during @code{make dist}.
+If a change fixes a bug, always give the bug reference number in the
address@hidden file and of course also in the checkin message.
+In general, it should be possible to enumerate all
material changes to a function by searching for its name in
@file{ChangeLog}. Mention when each release is made.
@end table
diff --git a/import-gnulib.config b/import-gnulib.config
index d4fc812..a4f036e 100644
--- a/import-gnulib.config
+++ b/import-gnulib.config
@@ -15,10 +15,16 @@ gpl3_update_files=''
# gnulib modules needed only for maintainer things.
maintainer_modules='
+gitlog-to-changelog
maintainer-makefile
update-copyright
'
+# Automake requires that ChangeLog exists.
+touch ChangeLog
+# Do not fail if the changelog driver is not installed.
+DO_NOT_WANT_CHANGELOG_DRIVER='Y'
+
# consider using do-release-commit-and-tag
# consider using gendocs
# consider using getdelim
--
1.8.4.5