Stefano Lattarini wrote: ... >> And all of that is duplicated in the ChangeLog file diffs below. >> >> Are you interested in generating ChangeLog from git logs? >> > Absolutely, but that's for a later change. Also, before going down that
Glad to hear it. > road, I'd like to have a vim syntax file able to highlight GNU-like > ChangeLog syntax in git messages (so, without "date + author" lines and > without leading tabs). I might hack one up myself as a "last resort", > but I'd rather steal something pre-existing :-) > >> > diff --git a/Makefile.am b/Makefile.am >> > index 51eeb23..4e8d13e 100644 >> > --- a/Makefile.am >> > +++ b/Makefile.am > > [SNIP] more suggestions I've followed. > >> > +## times in the past, when we used to keep the generated Makefile.in >> > +## committed into the automake's git repository. >> >> s/the.*repository/version-control Makefile.in/ >> > You mean "version-controlled Makefile.in"? No. I meant to remove the "keep", too. See below. > Subject: [PATCH] devel: help in comparing Makefile.in from different commits > > Now that the generated Makefile.in, configure and aclocal.m4 files > are no longer committed in Automake's git repository, a simple > "git diff" or "git log" no longer shows if and how a change in > Automake results in changes to the Makefile.in files and/or > configure script of its own build system. Still, the ability to > peek so easily at such differences had proved itself quite useful s/had/has/ > in the past, often revealing inconsistencies and blunders, and > sometimes even bugs; so it would be a pity to lose that altogether. > > With this change, we add a new maintainer recipe that re-introduces > much of that capability, by generating and comparing on the fly the > Makefile.in, configure and aclocal.m4 derived from two arbitrary > commits of the Automake repository. > > * Makefile.am (autodiffs, compare-autodiffs): New phony targets. > --- > ChangeLog | 17 ++++++++++++++ > Makefile.am | 69 > +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 86 insertions(+), 0 deletions(-) > > diff --git a/ChangeLog b/ChangeLog > index 5c07354..99b1248 100644 > --- a/ChangeLog > +++ b/ChangeLog > @@ -1,5 +1,22 @@ > 2011-12-09 Stefano Lattarini <stefano.lattar...@gmail.com> > > + devel: help in comparing Makefile.in from different commits > + Now that the generated Makefile.in, configure and aclocal.m4 files > + are no longer committed in Automake's git repository, a simple > + "git diff" or "git log" no longer shows if and how a change in > + Automake results in changes to the Makefile.in files and/or > + configure script of its own build system. Still, the ability to > + peek so easily at such differences had proved itself quite useful > + in the past, often revealing inconsistencies and blunders, and > + sometimes even bugs; so it would be a pity to lose that altogether. > + With this change, we add a new maintainer recipe that re-introduces > + much of that capability, by generating and comparing on the fly the > + Makefile.in, configure and aclocal.m4 derived from two arbitrary > + commits of the Automake repository. > + * Makefile.am (autodiffs, compare-autodiffs): New phony targets. > + > +2011-12-09 Stefano Lattarini <stefano.lattar...@gmail.com> > + > repo: don't commit generated files in the git repository anymore > It has been quite some time since autoconf and libtool have stopped > committing the generated autotools files in their git repositories, > diff --git a/Makefile.am b/Makefile.am > index 51eeb23..b7fa29a 100644 > --- a/Makefile.am > +++ b/Makefile.am > @@ -604,6 +604,75 @@ path-check: distdir > rm -rf $(distdir); \ > exit $$estatus > > +## Visually comparing differences between the Makefile.in files in the s/ the// > +## automake's own build system as generated in two different branches might > +## help to catch bugs and blunders. This has already happened a few times > +## in the past, when we used to keep version-control Makefile.in. Change the preceding line to this: (s/keep //) ## in the past, when we used to version-control Makefile.in. > +autodiffs: > + @set -u; \ > + NEW_COMMIT=$${NEW_COMMIT-"HEAD"}; \ > + OLD_COMMIT=$${OLD_COMMIT-"HEAD~1"}; \ > + am_gitdir='$(abs_top_srcdir)/.git'; \ > + get_autofiles_from_rev () \ > + { \ > + rev=$$1 dir=$$2 \ > + && echo "$@: will get files from revision $$rev" \ > + && git clone -q --depth 1 "$$am_gitdir" tmp \ > + && cd tmp \ > + && git checkout -q "$$rev" \ > + && echo "$@: bootstrapping $$rev" \ > + && $(SHELL) ./bootstrap \ > + && echo "$@: copying files from $$rev" \ > + && makefile_ins=`find . -name Makefile.in` \ > + && (tar cf - configure aclocal.m4 $$makefile_ins) | \ > + (cd .. && cd "$$dir" && tar xf -) \ > + && cd .. \ > + && rm -rf tmp; \ > + }; \ > + outdir=$@.dir \ > +## Before proceeding, ensure the specified revisions truly exist. > + && git --git-dir="$$am_gitdir" describe $$OLD_COMMIT >/dev/null \ > + && git --git-dir="$$am_gitdir" describe $$NEW_COMMIT >/dev/null \ > + && rm -rf $$outdir \ > + && mkdir $$outdir \ > + && cd $$outdir \ > + && mkdir new old \ > + && get_autofiles_from_rev $$OLD_COMMIT old \ > + && get_autofiles_from_rev $$NEW_COMMIT new \ > + && exit 0 > +## With lots of eye candy; we like out developers pampered and spoiled :-) s/out/our/ > +compare-autodiffs: autodiffs > + @set -u; \ > + : $${COLORDIFF=colordiff} $${DIFF=diff}; \ > + dir=autodiffs.dir; \ > + if test ! -d "$$dir"; then \ > + echo "$@: $$dir: Not a directory" >&2; \ > + exit 1; \ > + fi; \ > + mydiff=false mypager=false; \ > + if test -t 1; then \ > + if ($$COLORDIFF -r . .) </dev/null >/dev/null 2>&1; then \ > + mydiff=$$COLORDIFF; \ > + mypager="less -R"; \ > + else \ > + mypager=less; \ > + fi; \ > + else \ > + mypager=cat; \ > + fi; \ > + if test "$$mydiff" = false; then \ > + if ($$DIFF -r -u . .); then \ > + mydiff=$$DIFF; \ > + else \ > + echo "$@: no good-enough diff program specified" >&2; \ > + exit 1; \ > + fi; \ > + fi; \ > + st=0; $$mydiff -r -u $$dir/old $$dir/new | $$mypager || st=$$?; \ > + rm -rf $$dir; \ > + exit $$st > +.PHONY: autodiffs compare-autodiffs > + > ## Program to use to fetch files. > WGET = wget > WGET_SV_CVS = $(WGET) http://savannah.gnu.org/cgi-bin/viewcvs/~checkout~/