Stefano Lattarini wrote: > I went for a middle-ground solution (sorta), by having the differences > generated on-the-fly. This entails a decise slowdown, which is > however absolutely bearable even on my slow desktop. See the attached > patch. > > The code is a little more complicated than I'd like, but since this > is an optional, maintainer-only hack, with no impact on the build > system proper, that's not a big deal IMHO.
Hi Stefano, That looks like a fine solution, though I haven't tried it yet. > What I'm not satisfied with is the explanation of the change I've given > in the ChangeLog entry, which seems cumbersome and confusing. But I > haven't been able to come up with anything better so far :-( > > Comments and suggestions would be appreciated. ... > 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, we won't be Try to use "anymore" less. s/we.*"shows"/a simple "git diff" or "git log" no longer shows/ > able anymore to see with a simple "git diff" or "git log" if and > how a change in Automake reflects in changes to the Makefile.in s/reflects/results/ > 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 loose s/loose/lose/ > that altogether. > > With this change, we add a new maintainer recipe that re-introduce s/$/s/ > to a good degree such capability, by generating and comparing on s/to a good degree such/much of that/ And all of that is duplicated in the ChangeLog file diffs below. Are you interested in generating ChangeLog from git logs? > 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 | 18 +++++++++++++++ > Makefile.am | 69 > +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 87 insertions(+), 0 deletions(-) > > diff --git a/ChangeLog b/ChangeLog > index 5c07354..7bc6b00 100644 > --- a/ChangeLog > +++ b/ChangeLog > @@ -1,5 +1,23 @@ > 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, we won't be > + able anymore to see with a simple "git diff" or "git log" if and > + how a change in Automake reflects 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 loose > + that altogether. > + With this change, we add a new maintainer recipe that re-introduce > + to a good degree such 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..4e8d13e 100644 > --- a/Makefile.am > +++ b/Makefile.am > @@ -604,6 +604,75 @@ path-check: distdir > rm -rf $(distdir); \ > exit $$estatus > > +## Visually comparnig differences between the Makefile.in files in the comparing > +## automake's own build system as generated in two different branches > +## might help to catch bugs and blunders. This has already happened few s/few/a few/ > +## 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/ > +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 \ > + && 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 ...